Changeset 96562 in spip-zone


Ignore:
Timestamp:
Apr 10, 2016, 5:58:06 PM (4 years ago)
Author:
spip.franck@…
Message:

Remplacement des espaces par des tab pour être un peu plus conforme avec http://www.spip.net/fr_article3497.html#regles_codage

Location:
_plugins_/hydraulic/trunk
Files:
49 edited

Legend:

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

    r95765 r96562  
    33<script language="javascript" type="text/javascript" src="#CHEMIN{js/hyd_fonctions.js}"></script>
    44<script>
    5 /*
    6  * La plupart des commentaires sont les mêmes que pour la page lechapt_calmon.html
    7  */
    8 
    9 // Choix de l'ouvrage
    10 var globSelectOuv = 'vRect';
    11 var glob = [];
    12 
    13 function initGlob(){
    14     <BOUCLE_globChOuv(POUR){tableau #ENV{OuvrageCaract}}>
    15         glob['#CLE'] = '#ENV{choix_champs_#CLE}';
    16     </BOUCLE_globChOuv>
    17 
    18     <BOUCLE_globSurverse(POUR){tableau #ENV{surverse}}>
    19         <BOUCLE_pasLoiDeb(CONDITION){si #CLE|!= {'loi_debit'}}>
    20             glob['#CLE'] = '#ENV{choix_champs_#CLE}';
    21         </BOUCLE_pasLoiDeb>
    22     </BOUCLE_globSurverse>
    23 
    24     <BOUCLE_globCaractFixes(POUR){tableau #ENV{caract_fixes}}>
    25         #SET{caractFixes, #VALEUR|table_valeur{1}}
    26         <BOUCLE_siCaractFixes(CONDITION){si #VALEUR|table_valeur{0}|== {'caract_globale'}}>
    27             <BOUCLE_Fixes(POUR){tableau #GET{caractFixes}}>
    28                 glob['#CLE'] = '#ENV{choix_champs_#CLE}';
    29             </BOUCLE_Fixes>
    30         </BOUCLE_siCaractFixes>
    31     </BOUCLE_globCaractFixes>
    32 }
    33 
    34 initGlob();
    35 function setVarGlob(){
    36     globSelectOuv = getSelectValue('choix_ouvrage');
    37     for(var i in glob){
    38         glob[i] = getRadioValue('choix_champs_'+i);
    39     }
    40 }
    41 
    42 function inArray(array, p_val) {
    43     var l = array.length;
    44     for(var i = 0; i < l; i++) {
    45         if(array[i] == p_val) {
    46             return true;
    47         }
    48     }
    49     return false;
    50 }
    51 
    52 // Retourne sous forme de tableau tous les élèments de la Class classe et de type tagName
    53 function elementsParClasse(classe, tagName){
    54     var divs = document.getElementsByTagName(tagName);
    55     var resultats = new Array();
    56     for(var i=0; i<divs.length; i++){
    57         if(divs[i].className == classe){
    58             resultats.push(divs[i]);
    59         }
    60     }
    61     return resultats;
    62 }
    63 
    64 function retourneIndiceSuivant(tabIndice, nom){
    65     var indice = '';
    66     for(var i = 0; i < tabIndice.length; i++){
    67         if(tabIndice[i] == nom){
    68             // Si on est pas arrivé au dernier élément
    69             if(i+1 <= tabIndice.length-1){
    70                 indice = tabIndice[i+1];
    71             }
    72             else{
    73                 indice = tabIndice[0];
    74             }
    75         }
    76     }
    77     return indice;
    78 }
    79 
    80 function affichageEtValeur(){
    81     afficher_cacher_champs_select();
    82     afficher_cacher_champs_ouv();
    83     afficher_cacher_surverse();
    84 }
    85 
    86 function afficher_cacher_champs_select(){
    87     setVarGlob();
    88     var tabAfficher = [];
    89 
    90     <BOUCLE_tabS(POUR){tableau #ENV{mes_saisies}}>
    91         if(globSelectOuv == '#CLE'){
    92             <BOUCLE_tabS2(POUR){tableau #VALEUR|table_valeur{2}}>
    93                 tabAfficher.push([(#VALEUR|table_valeur{0})]);
    94             </BOUCLE_tabS2>
    95         }
    96     </BOUCLE_tabS>
    97 
    98     var bSel = false;
    99     for(var i = 0; i < document.getElementById("choix_equation_debit").length; i++){
    100         document.getElementById("choix_equation_debit").options[i].style.display="none";
    101         document.getElementById("choix_equation_debit").options[i].selected=false;
    102         for(var j in tabAfficher){
    103             if(j == document.getElementById("choix_equation_debit").options[i].value) {
    104                 document.getElementById("choix_equation_debit").options[i].style.display="list-item";
    105                 if(!bSel) {
    106                     bSel = true;
    107                     document.getElementById("choix_equation_debit").options[i].selected=true;
    108                 }
    109             }
    110         }
    111     }
    112 }
    113 
    114 function afficher_cacher_champs_ouv(){
    115 
    116     for(var i in glob){
    117         if(document.getElementById('varier_val_'+i).checked){
    118             var cacher = elementsParClasse('champs_var_'+i, 'tr');
    119             for(var j in cacher){
    120                 cacher[j].style.display='none';
    121             }
    122             document.getElementById('val_fixe_'+i).checked=true;
    123             document.getElementById('caract_'+i).disabled=false;
    124         }
    125         if(document.getElementById('calcul_val_'+i).checked){
    126             document.getElementById('val_fixe_'+i).checked=true;
    127         }
    128     }
    129 
    130     <BOUCLE_initGlob(POUR){tableau #ENV{mes_saisies}}>
    131         <BOUCLE_initGlob1(POUR){tableau #VALEUR|table_valeur{1}}>
    132             #SET{compteur, #COMPTEUR_BOUCLE}
    133             <BOUCLE_premiereVal(CONDITION){si #GET{compteur}|== {1}}>
    134                 document.getElementById('calcul_val_#CLE').checked=true;
    135             </BOUCLE_premiereVal>
    136                 document.getElementById('val_fixe_#CLE').checked=true;
    137             <//B_premiereVal>
    138         </BOUCLE_initGlob1>
    139     </BOUCLE_initGlob>
    140 
    141     var tabOuvrageAfficher = [];
    142     var tabOuvrageCacher = [];
    143 
    144     <BOUCLE_remplisTabOuv(POUR) {tableau #ENV{mes_saisies}}>
    145         if(globSelectOuv == '#CLE'){
    146         <BOUCLE_remplisTabOuv2(POUR) {tableau #VALEUR|table_valeur{1}}>
    147             tabOuvrageAfficher.push('#CLE');
    148         </BOUCLE_remplisTabOuv2>
    149         }
    150     </BOUCLE_remplisTabOuv>
    151 
    152     <BOUCLE_libEquat(POUR){tableau #ENV{OuvrageCaract}}>
    153         tabOuvrageCacher.push('#CLE');
    154     </BOUCLE_libEquat>
    155 
    156     for(var i in tabOuvrageCacher){
    157         document.getElementById('ouvrage_'+tabOuvrageCacher[i]).style.display='none';
    158     }
    159 
    160     for(var i in tabOuvrageAfficher){
    161         document.getElementById('ouvrage_'+tabOuvrageAfficher[i]).style.display='table-row';
    162     }
    163 
    164 }
    165 
    166 function afficher_cacher_surverse(){
    167     setVarGlob();
    168     var tabAffSurv = [];
    169 
    170     <BOUCLE_vanne1(POUR){tableau #ENV{mes_saisies}}>
    171     #SET{afficherVanne, #VALEUR|table_valeur{1}}
    172         <BOUCLE_vanne2(CONDITION){si #VALEUR|table_valeur{0}|substr{0,5}|== {'vanne'}}>
    173             tabAffSurv.push('#CLE');
    174         </BOUCLE_vanne2>
    175     </BOUCLE_vanne1>
    176 
    177     // Afficher ou cacher le fieldset + la case a cocher si cest pas une vanne
    178     if(tabAffSurv.indexOf(globSelectOuv) !== -1){
    179         document.getElementById("surverseField").style.display='table-row';
    180         document.getElementById("SurverseEnabled").style.display='table-row';
    181 
    182     }
    183     else{
    184         document.getElementById("surverseField").style.display='none';
    185         document.getElementById("SurverseEnabled").style.display='none';
    186         document.getElementById("affSurverse").checked=false;
    187     }
    188 
    189     var f = document.getElementById("form_calcul_ouvrages");
    190     if(f) {
    191         var champs = f.getElementsByTagName("tr");
    192         for(var i=0, n=champs.length; i<n; i++) {
    193             if(champs[i].getAttribute("id") !== null && champs[i].getAttribute("id").indexOf('field_surverse',0) !== -1 && document.getElementById("affSurverse").checked){
    194                 document.getElementById(champs[i].getAttribute("id")).style.display="table-row";
    195                 document.getElementById('loi_debit_surverse').style.display="table-row";
    196             }
    197             else if(champs[i].getAttribute("id") !== null && champs[i].getAttribute("id").indexOf('field_surverse',0) !== -1 && !document.getElementById("affSurverse").checked){
    198                 document.getElementById(champs[i].getAttribute("id")).style.display="none";
    199                 document.getElementById('loi_debit_surverse').style.display="none";
    200             }
    201         }
    202     }
    203 }
    204 
    205 // Gére le comportement des boutons radios
    206 function gestion_radios(nom,valeur){
    207     tabPartiel = [];
    208     tabIndice = [];
    209 
    210     <BOUCLE_chOuv(POUR){tableau #ENV{mes_saisies}}>
    211         if(globSelectOuv == '#CLE'){
    212             <BOUCLE_chOuv2(POUR){tableau #VALEUR|table_valeur{1}}>
    213                 tabPartiel['#CLE'] = '#ENV{choix_champs_#CLE}';
    214                 tabIndice.push('#CLE');
    215             </BOUCLE_chOuv2>
    216         }
    217     </BOUCLE_chOuv>
    218 
    219     if(document.getElementById('affSurverse').checked){
    220         <BOUCLE_surverseCoche(POUR){tableau #ENV{surverse}}>
    221             <BOUCLE_pasLoi(CONDITION){si #CLE|!= {'loi_debit'}}>
    222                 tabPartiel['#CLE'] = '#ENV{choix_champs_#CLE}';
    223                 tabIndice.push('#CLE');
    224             </BOUCLE_pasLoi>
    225         </BOUCLE_surverseCoche>
    226     }
    227 
    228     <BOUCLE_globCaractFixes2(POUR){tableau #ENV{caract_fixes}}>
    229         #SET{caractFixes2, #VALEUR|table_valeur{1}}
    230         <BOUCLE_siCaractFixes2(CONDITION){si #VALEUR|table_valeur{0}|== {'caract_globale'}}>
    231             <BOUCLE_Fixes2(POUR){tableau #GET{caractFixes2}}>
    232                 tabPartiel['#CLE'] = '#ENV{choix_champs_#CLE}';
    233                 tabIndice.push('#CLE');
    234             </BOUCLE_Fixes2>
    235         </BOUCLE_siCaractFixes2>
    236     </BOUCLE_globCaractFixes2>
    237 
    238     // On supprime du tableau l'élément sur lequel on a cliqué
    239     delete(tabPartiel[nom]);
    240 
    241     if(valeur.substr(0,3) == 'cal'){
    242         document.getElementById('caract_'+nom).disabled=false;
    243         for(var cle in tabPartiel){
    244             if(document.getElementById('calcul_val_'+cle).checked){
    245                 document.getElementById('val_fixe_'+cle).checked=true;
    246                 setVarGlob();
    247             }
    248         }
    249     }
    250 
    251     // Si on appuit sur un bouton de type "varier_val" ou "val_fixe"
    252     else if(valeur.substr(0,3) == 'var' || valeur.substr(0,3)=='val'){
    253         for(var cle in tabPartiel){
    254             if(document.getElementById('varier_val_'+cle).checked && (glob[nom] != "calcul_val_"+nom)){
    255                 if(document.getElementById('varier_val_'+nom).checked){
    256                     document.getElementById('val_fixe_'+cle).checked=true;
    257                     document.getElementById('caract_'+nom).disabled=true;
    258                 }
    259                 setVarGlob();
    260             }
    261             else if(document.getElementById('varier_val_'+cle).checked && (glob[nom] == "calcul_val_"+nom) && valeur.substr(0,3) == 'var'){
    262                 document.getElementById('calcul_val_'+cle).checked=true;
    263                 document.getElementById('caract_'+cle).disabled=false;
    264                 setVarGlob();
    265             }
    266         }
    267 
    268         // Compte le nombre de calcul_val checké
    269         var cptValCal = 0;
    270         for(var cle in glob){
    271             if(inArray(tabIndice, cle)){
    272                 if(document.getElementById('calcul_val_'+cle).checked){
    273                     cptValCal++;
    274                 }
    275             }
    276         }
    277         // Si aucune calcul_val n'est checké
    278         if(cptValCal == 0){
    279             // Alors on chercher l'indice suivant...
    280             indice = '';
    281             for(var i = 0; i < tabIndice.length; i++){
    282                 if(tabIndice[i] == nom){
    283                     // Si on est pas arrivé au dernier élément
    284                     if(i+1 <= tabIndice.length-1){
    285                         indice = tabIndice[i+1];
    286                     }
    287                     else{
    288                         indice = tabIndice[0];
    289                     }
    290                 }
    291 
    292             }
    293             // ... et on le met a calcul_val
    294             document.getElementById('calcul_val_'+indice).checked=true;
    295             document.getElementById('caract_'+indice).disabled=false;
    296             document.getElementById('caract_'+nom).disabled=false;
    297             var cacher = elementsParClasse('champs_var_'+indice, 'tr');
    298             for(var i in cacher){
    299                 cacher[i].style.display='none';
    300             }
    301             setVarGlob();
    302         }
    303     }
    304 
    305     // Si on appuis sur un bouton de type varier_val
    306     if(valeur.substr(0,3) == 'var'){
    307         setVarGlob();
    308         document.getElementById('caract_'+nom).disabled=true;
    309         for(var cle in glob){
    310             if(inArray(tabIndice, cle)){
    311                 if(glob[cle].substr(0,3) == 'val'){
    312                     document.getElementById('caract_'+cle).disabled=false;
    313                 }
    314             }
    315         }
    316 
    317         // on affiche les champs correspondant au bouton sélectionné
    318         var afficher = elementsParClasse('champs_var_'+nom, 'tr');
    319         for(var i in afficher){
    320             afficher[i].style.display='table-row';
    321         }
    322         // On cache tous les autres champs de variations.
    323         for(var cle in tabPartiel){
    324             var cacher = elementsParClasse('champs_var_'+cle, 'tr');
    325             for(var i in cacher){
    326                 cacher[i].style.display='none';
    327             }
    328         }
    329 
    330         setVarGlob();
    331     }
    332 
    333     // Compte le nombre de varier_val checké
    334     var cptVarVal = 0;
    335     for(var cle in glob){
    336         if(inArray(tabIndice, cle)){
    337             if(document.getElementById('varier_val_'+cle).checked){
    338                 cptVarVal++;
    339             }
    340         }
    341     }
    342 
    343     if(cptVarVal == 0){
    344         for(var cle in glob){
    345             if(inArray(tabIndice, cle)){
    346                 if(glob[cle].substr(0,3) != 'cal'){
    347                     document.getElementById('caract_'+cle).disabled=false;
    348                 }
    349             }
    350         }
    351         var cacher = elementsParClasse('champs_var_'+nom, 'tr');
    352         for(var i in cacher){
    353             cacher[i].style.display='none';
    354         }
    355     }
    356 
    357     setVarGlob();
    358 }
     5        /**
     6         * La plupart des commentaires sont les mêmes que pour la page lechapt_calmon.html
     7         */
     8
     9        // Choix de l'ouvrage
     10        var globSelectOuv = 'vRect';
     11        var glob = [];
     12
     13        function initGlob(){
     14                <BOUCLE_globChOuv(POUR){tableau #ENV{OuvrageCaract}}>
     15                        glob['#CLE'] = '#ENV{choix_champs_#CLE}';
     16                </BOUCLE_globChOuv>
     17
     18                <BOUCLE_globSurverse(POUR){tableau #ENV{surverse}}>
     19                        <BOUCLE_pasLoiDeb(CONDITION){si #CLE|!= {'loi_debit'}}>
     20                                glob['#CLE'] = '#ENV{choix_champs_#CLE}';
     21                        </BOUCLE_pasLoiDeb>
     22                </BOUCLE_globSurverse>
     23
     24                <BOUCLE_globCaractFixes(POUR){tableau #ENV{caract_fixes}}>
     25                        #SET{caractFixes, #VALEUR|table_valeur{1}}
     26                        <BOUCLE_siCaractFixes(CONDITION){si #VALEUR|table_valeur{0}|== {'caract_globale'}}>
     27                                <BOUCLE_Fixes(POUR){tableau #GET{caractFixes}}>
     28                                        glob['#CLE'] = '#ENV{choix_champs_#CLE}';
     29                                </BOUCLE_Fixes>
     30                        </BOUCLE_siCaractFixes>
     31                </BOUCLE_globCaractFixes>
     32        }
     33
     34        initGlob();
     35        function setVarGlob(){
     36                globSelectOuv = getSelectValue('choix_ouvrage');
     37                for(var i in glob){
     38                        glob[i] = getRadioValue('choix_champs_'+i);
     39                }
     40        }
     41
     42        function inArray(array, p_val) {
     43                var l = array.length;
     44                for(var i = 0; i < l; i++) {
     45                        if(array[i] == p_val) {
     46                                return true;
     47                        }
     48                }
     49                return false;
     50        }
     51
     52        // Retourne sous forme de tableau tous les élèments de la Class classe et de type tagName
     53        function elementsParClasse(classe, tagName) {
     54                var divs = document.getElementsByTagName(tagName);
     55                var resultats = new Array();
     56                for(var i=0; i<divs.length; i++){
     57                        if(divs[i].className == classe){
     58                                resultats.push(divs[i]);
     59                        }
     60                }
     61                return resultats;
     62        }
     63
     64        function retourneIndiceSuivant(tabIndice, nom) {
     65                var indice = '';
     66                for(var i = 0; i < tabIndice.length; i++){
     67                        if(tabIndice[i] == nom){
     68                                // Si on est pas arrivé au dernier élément
     69                                if(i+1 <= tabIndice.length-1){
     70                                        indice = tabIndice[i+1];
     71                                }
     72                                else{
     73                                        indice = tabIndice[0];
     74                                }
     75                        }
     76                }
     77                return indice;
     78        }
     79
     80        function affichageEtValeur() {
     81                afficher_cacher_champs_select();
     82                afficher_cacher_champs_ouv();
     83                afficher_cacher_surverse();
     84        }
     85
     86        function afficher_cacher_champs_select() {
     87                setVarGlob();
     88                var tabAfficher = [];
     89
     90                <BOUCLE_tabS(POUR){tableau #ENV{mes_saisies}}>
     91                        if(globSelectOuv == '#CLE'){
     92                                <BOUCLE_tabS2(POUR){tableau #VALEUR|table_valeur{2}}>
     93                                        tabAfficher.push([(#VALEUR|table_valeur{0})]);
     94                                </BOUCLE_tabS2>
     95                        }
     96                </BOUCLE_tabS>
     97
     98                var bSel = false;
     99                for(var i = 0; i < document.getElementById("choix_equation_debit").length; i++){
     100                        document.getElementById("choix_equation_debit").options[i].style.display="none";
     101                        document.getElementById("choix_equation_debit").options[i].selected=false;
     102                        for(var j in tabAfficher){
     103                                if(j == document.getElementById("choix_equation_debit").options[i].value) {
     104                                        document.getElementById("choix_equation_debit").options[i].style.display="list-item";
     105                                        if(!bSel) {
     106                                                bSel = true;
     107                                                document.getElementById("choix_equation_debit").options[i].selected=true;
     108                                        }
     109                                }
     110                        }
     111                }
     112        }
     113
     114        function afficher_cacher_champs_ouv() {
     115
     116                for(var i in glob){
     117                        if(document.getElementById('varier_val_'+i).checked){
     118                                var cacher = elementsParClasse('champs_var_'+i, 'tr');
     119                                for(var j in cacher){
     120                                        cacher[j].style.display='none';
     121                                }
     122                                document.getElementById('val_fixe_'+i).checked=true;
     123                                document.getElementById('caract_'+i).disabled=false;
     124                        }
     125                        if(document.getElementById('calcul_val_'+i).checked){
     126                                document.getElementById('val_fixe_'+i).checked=true;
     127                        }
     128                }
     129
     130                <BOUCLE_initGlob(POUR){tableau #ENV{mes_saisies}}>
     131                        <BOUCLE_initGlob1(POUR){tableau #VALEUR|table_valeur{1}}>
     132                                #SET{compteur, #COMPTEUR_BOUCLE}
     133                                <BOUCLE_premiereVal(CONDITION){si #GET{compteur}|== {1}}>
     134                                        document.getElementById('calcul_val_#CLE').checked=true;
     135                                </BOUCLE_premiereVal>
     136                                        document.getElementById('val_fixe_#CLE').checked=true;
     137                                <//B_premiereVal>
     138                        </BOUCLE_initGlob1>
     139                </BOUCLE_initGlob>
     140
     141                var tabOuvrageAfficher = [];
     142                var tabOuvrageCacher = [];
     143
     144                <BOUCLE_remplisTabOuv(POUR) {tableau #ENV{mes_saisies}}>
     145                        if(globSelectOuv == '#CLE'){
     146                                <BOUCLE_remplisTabOuv2(POUR) {tableau #VALEUR|table_valeur{1}}>
     147                                        tabOuvrageAfficher.push('#CLE');
     148                                </BOUCLE_remplisTabOuv2>
     149                        }
     150                </BOUCLE_remplisTabOuv>
     151
     152                <BOUCLE_libEquat(POUR){tableau #ENV{OuvrageCaract}}>
     153                        tabOuvrageCacher.push('#CLE');
     154                </BOUCLE_libEquat>
     155
     156                for(var i in tabOuvrageCacher){
     157                        document.getElementById('ouvrage_'+tabOuvrageCacher[i]).style.display='none';
     158                }
     159
     160                for(var i in tabOuvrageAfficher){
     161                        document.getElementById('ouvrage_'+tabOuvrageAfficher[i]).style.display='table-row';
     162                }
     163
     164        }
     165
     166        function afficher_cacher_surverse() {
     167                setVarGlob();
     168                var tabAffSurv = [];
     169
     170                <BOUCLE_vanne1(POUR){tableau #ENV{mes_saisies}}>
     171                        #SET{afficherVanne, #VALEUR|table_valeur{1}}
     172                        <BOUCLE_vanne2(CONDITION){si #VALEUR|table_valeur{0}|substr{0,5}|== {'vanne'}}>
     173                                tabAffSurv.push('#CLE');
     174                        </BOUCLE_vanne2>
     175                </BOUCLE_vanne1>
     176
     177                // Afficher ou cacher le fieldset + la case a cocher si cest pas une vanne
     178                if(tabAffSurv.indexOf(globSelectOuv) !== -1){
     179                        document.getElementById("surverseField").style.display='table-row';
     180                        document.getElementById("SurverseEnabled").style.display='table-row';
     181
     182                }
     183                else{
     184                        document.getElementById("surverseField").style.display='none';
     185                        document.getElementById("SurverseEnabled").style.display='none';
     186                        document.getElementById("affSurverse").checked=false;
     187                }
     188
     189                var f = document.getElementById("form_calcul_ouvrages");
     190                if(f) {
     191                        var champs = f.getElementsByTagName("tr");
     192                        for(var i=0, n=champs.length; i<n; i++) {
     193                                if(champs[i].getAttribute("id") !== null && champs[i].getAttribute("id").indexOf('field_surverse',0) !== -1 && document.getElementById("affSurverse").checked){
     194                                        document.getElementById(champs[i].getAttribute("id")).style.display="table-row";
     195                                        document.getElementById('loi_debit_surverse').style.display="table-row";
     196                                }
     197                                else if(champs[i].getAttribute("id") !== null && champs[i].getAttribute("id").indexOf('field_surverse',0) !== -1 && !document.getElementById("affSurverse").checked){
     198                                        document.getElementById(champs[i].getAttribute("id")).style.display="none";
     199                                        document.getElementById('loi_debit_surverse').style.display="none";
     200                                }
     201                        }
     202                }
     203        }
     204
     205        // Gére le comportement des boutons radios
     206        function gestion_radios(nom,valeur) {
     207                tabPartiel = [];
     208                tabIndice = [];
     209
     210                <BOUCLE_chOuv(POUR){tableau #ENV{mes_saisies}}>
     211                        if(globSelectOuv == '#CLE'){
     212                                <BOUCLE_chOuv2(POUR){tableau #VALEUR|table_valeur{1}}>
     213                                        tabPartiel['#CLE'] = '#ENV{choix_champs_#CLE}';
     214                                        tabIndice.push('#CLE');
     215                                </BOUCLE_chOuv2>
     216                        }
     217                </BOUCLE_chOuv>
     218
     219                if(document.getElementById('affSurverse').checked){
     220                        <BOUCLE_surverseCoche(POUR){tableau #ENV{surverse}}>
     221                                <BOUCLE_pasLoi(CONDITION){si #CLE|!= {'loi_debit'}}>
     222                                        tabPartiel['#CLE'] = '#ENV{choix_champs_#CLE}';
     223                                        tabIndice.push('#CLE');
     224                                </BOUCLE_pasLoi>
     225                        </BOUCLE_surverseCoche>
     226                }
     227
     228                <BOUCLE_globCaractFixes2(POUR){tableau #ENV{caract_fixes}}>
     229                        #SET{caractFixes2, #VALEUR|table_valeur{1}}
     230                        <BOUCLE_siCaractFixes2(CONDITION){si #VALEUR|table_valeur{0}|== {'caract_globale'}}>
     231                                <BOUCLE_Fixes2(POUR){tableau #GET{caractFixes2}}>
     232                                        tabPartiel['#CLE'] = '#ENV{choix_champs_#CLE}';
     233                                        tabIndice.push('#CLE');
     234                                </BOUCLE_Fixes2>
     235                        </BOUCLE_siCaractFixes2>
     236                </BOUCLE_globCaractFixes2>
     237
     238                // On supprime du tableau l'élément sur lequel on a cliqué
     239                delete(tabPartiel[nom]);
     240
     241                if(valeur.substr(0,3) == 'cal'){
     242                        document.getElementById('caract_'+nom).disabled=false;
     243                        for(var cle in tabPartiel){
     244                                if(document.getElementById('calcul_val_'+cle).checked){
     245                                        document.getElementById('val_fixe_'+cle).checked=true;
     246                                        setVarGlob();
     247                                }
     248                        }
     249                }
     250
     251                // Si on appuit sur un bouton de type "varier_val" ou "val_fixe"
     252                else if(valeur.substr(0,3) == 'var' || valeur.substr(0,3)=='val'){
     253                        for(var cle in tabPartiel){
     254                                if(document.getElementById('varier_val_'+cle).checked && (glob[nom] != "calcul_val_"+nom)){
     255                                        if(document.getElementById('varier_val_'+nom).checked){
     256                                                document.getElementById('val_fixe_'+cle).checked=true;
     257                                                document.getElementById('caract_'+nom).disabled=true;
     258                                        }
     259                                        setVarGlob();
     260                                }
     261                                else if(document.getElementById('varier_val_'+cle).checked && (glob[nom] == "calcul_val_"+nom) && valeur.substr(0,3) == 'var'){
     262                                        document.getElementById('calcul_val_'+cle).checked=true;
     263                                        document.getElementById('caract_'+cle).disabled=false;
     264                                        setVarGlob();
     265                                }
     266                        }
     267
     268                        // Compte le nombre de calcul_val checké
     269                        var cptValCal = 0;
     270                        for(var cle in glob){
     271                                if(inArray(tabIndice, cle)){
     272                                        if(document.getElementById('calcul_val_'+cle).checked){
     273                                                cptValCal++;
     274                                        }
     275                                }
     276                        }
     277                        // Si aucune calcul_val n'est checké
     278                        if(cptValCal == 0){
     279                                // Alors on chercher l'indice suivant...
     280                                indice = '';
     281                                for(var i = 0; i < tabIndice.length; i++){
     282                                        if(tabIndice[i] == nom){
     283                                                // Si on est pas arrivé au dernier élément
     284                                                if(i+1 <= tabIndice.length-1){
     285                                                        indice = tabIndice[i+1];
     286                                                }
     287                                                else{
     288                                                        indice = tabIndice[0];
     289                                                }
     290                                        }
     291                                }
     292                                // ... et on le met a calcul_val
     293                                document.getElementById('calcul_val_'+indice).checked=true;
     294                                document.getElementById('caract_'+indice).disabled=false;
     295                                document.getElementById('caract_'+nom).disabled=false;
     296                                var cacher = elementsParClasse('champs_var_'+indice, 'tr');
     297                                for(var i in cacher){
     298                                        cacher[i].style.display='none';
     299                                }
     300                                setVarGlob();
     301                        }
     302                }
     303
     304                // Si on appuis sur un bouton de type varier_val
     305                if(valeur.substr(0,3) == 'var'){
     306                        setVarGlob();
     307                        document.getElementById('caract_'+nom).disabled=true;
     308                        for(var cle in glob){
     309                                if(inArray(tabIndice, cle)){
     310                                        if(glob[cle].substr(0,3) == 'val'){
     311                                                document.getElementById('caract_'+cle).disabled=false;
     312                                        }
     313                                }
     314                        }
     315
     316                        // on affiche les champs correspondant au bouton sélectionné
     317                        var afficher = elementsParClasse('champs_var_'+nom, 'tr');
     318                        for(var i in afficher){
     319                                afficher[i].style.display='table-row';
     320                        }
     321                        // On cache tous les autres champs de variations.
     322                        for(var cle in tabPartiel){
     323                                var cacher = elementsParClasse('champs_var_'+cle, 'tr');
     324                                for(var i in cacher){
     325                                        cacher[i].style.display='none';
     326                                }
     327                        }
     328
     329                        setVarGlob();
     330                }
     331
     332                // Compte le nombre de varier_val checké
     333                var cptVarVal = 0;
     334                for(var cle in glob){
     335                        if(inArray(tabIndice, cle)){
     336                                if(document.getElementById('varier_val_'+cle).checked){
     337                                        cptVarVal++;
     338                                }
     339                        }
     340                }
     341
     342                if(cptVarVal == 0){
     343                        for(var cle in glob){
     344                                if(inArray(tabIndice, cle)){
     345                                        if(glob[cle].substr(0,3) != 'cal'){
     346                                                document.getElementById('caract_'+cle).disabled=false;
     347                                        }
     348                                }
     349                        }
     350                        var cacher = elementsParClasse('champs_var_'+nom, 'tr');
     351                        for(var i in cacher){
     352                                cacher[i].style.display='none';
     353                        }
     354                }
     355
     356                setVarGlob();
     357        }
    359358
    360359</script>
    361360
    362361<form method="post" action="#ENV{action}#VAL{#resultat_ouvrages}" id="form_calcul_ouvrages">
    363    #ACTION_FORMULAIRE{#ENV{action}}
    364    <table class="hyd_formulaire">
    365       <tbody>
    366 
    367         <tr id="ch_ouvrage_field">
    368             <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:type_ouvrage:></div></td>
    369         </tr>
    370 
    371         <tr id="type_ouvrage">
    372             <td align="right" width="30%">
    373                 <:hydraulic:choix_ouvrage:> :
    374             </td>
    375 
    376             <td colspan="4" width="70%">
    377                 <select name="OuvrageType" id="choix_ouvrage" onChange="affichageEtValeur()">
    378                 <BOUCLE_OuvrageTypes(POUR){tableau #ENV{mes_saisies}}>
    379                     <option value="#CLE" [(#ENV{OuvrageType}|=={#CLE}|?{'selected',''})]>[(#VALEUR|table_valeur{0}|traduction_hydraulic)]</option>
    380                 </BOUCLE_OuvrageTypes>
    381                 </select>
    382 
    383                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    384             </td>
    385 
    386         </tr>
    387 
    388         <tr id="equation_debit">
    389             <td align="right" width="30%">
    390                 <:hydraulic:loi_debit:> :
    391             </td>
    392 
    393             <td colspan="4" width="70%">
    394                 <select name="OuvrageLoi" id="choix_equation_debit">
    395                 <BOUCLE_choixEquat(POUR){tableau #ENV{numLoi}}>
    396                 #SET{numLoi, #CLE}
    397                 <BOUCLE_tabMesSaisies(POUR){tableau #ENV{mes_saisies}}>
    398                     #SET{val2-0, #VALEUR|table_valeur{2}}
    399                     <BOUCLE_conditionAff(CONDITION){si #ENV{OuvrageType}|=={#CLE}}>
    400                         <BOUCLE_tabMesSaisies2(POUR){tableau #GET{val2-0}}>
    401                             <BOUCLE_numeroLoi(CONDITION){si #GET{numLoi}|=={#VALEUR|table_valeur{0}}}>
    402                                 #SET{affichage, #GET{numLoi}}
    403                             </BOUCLE_numeroLoi>
    404                         </BOUCLE_tabMesSaisies2>
    405                     </BOUCLE_conditionAff>
    406                 </BOUCLE_tabMesSaisies>
    407                     <option value="#CLE" [(#ENV{OuvrageLoi}|=={#CLE}|?{'selected',''})] style="display: [(#CLE|=={#GET{affichage}}|?{'list-item','none'})]">[(#VALEUR|traduction_hydraulic)]</option>
    408                 </BOUCLE_choixEquat>
    409                 </select>
    410 
    411                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    412             </td>
    413         </tr>
    414 
    415         <tr id="caract_ouvrages">
    416             <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:caract_ouvrages:></div></td>
    417         </tr>
    418 
    419         <tr>
    420             <td colspan="2"></td>
    421             <td align="center"><:hydraulic:calcul_val:></td>
    422             <td align="center"><:hydraulic:varier_val:></td>
    423             <td align="center"><:hydraulic:fixer_val:></td>
    424         </tr>
    425 
    426 
    427 <BOUCLE_caract(POUR) {tableau #ENV{OuvrageCaract}}>
    428         #SET{cleLibOuv, #CLE}
    429         <BOUCLE_tableauSaisies(POUR){tableau #ENV{mes_saisies}}>
    430             #SET{ident_cle_field, #CLE}
    431             <BOUCLE_tableauSaisies2(POUR){tableau #VALEUR|table_valeur{1}}>
    432                 #SET{cleValeur, #CLE}
    433                 <BOUCLE_condLib(CONDITION){si #ENV{OuvrageType}|=={#GET{ident_cle_field}}}>
    434                     <BOUCLE_condLib2(CONDITION){si #GET{cleValeur}|=={#GET{cleLibOuv}}}>
    435                         #SET{afficher_cle, #CLE}
    436                     </BOUCLE_condLib2>
    437                 </BOUCLE_condLib>
    438             </BOUCLE_tableauSaisies2>
    439         </BOUCLE_tableauSaisies>
    440 
    441         <tr id="ouvrage_#CLE" style="display: [(#GET{afficher_cle}|=={#CLE}|?{'table-row','none'})]">
    442             <td align="right">
    443                 [(#VALEUR|table_valeur{0}|traduction_hydraulic)] :
    444             </td>
    445 
    446             <td>
    447                 <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE"/>
    448                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
    449             </td>
    450 
    451             <td align="center">
    452                 <input type="radio" id="calcul_val_#CLE" name="choix_champs_#CLE" value="calcul_val_#CLE" onclick="gestion_radios('#CLE', 'calcul_val_#CLE')" [(#ENV{choix_champs_#CLE}|=={calcul_val_#CLE}?{'checked',''})]/>
    453             </td>
    454 
    455             <td align="center">
    456                 <input type="radio" id="varier_val_#CLE" name="choix_champs_#CLE" value="varier_val_#CLE" onclick="gestion_radios('#CLE', 'varier_val_#CLE')"[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}?{'checked',''})]/>
    457             </td>
    458 
    459             <td align="center">
    460                 <input type="radio" id="val_fixe_#CLE" name="choix_champs_#CLE" value="val_fixe_#CLE" onclick="gestion_radios('#CLE', 'val_fixe_#CLE')"[(#ENV{choix_champs_#CLE}|=={val_fixe_#CLE}?{'checked',''})]/>
    461             </td>
    462         </tr>
    463 
    464         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    465             <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
    466             <td colspan="2">
    467                 <input name="val_min_#CLE" type="text" value="#ENV{val_min_#CLE}"/>
    468                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#CLE})</div>]
    469             </td>
    470         </tr>
    471 
    472         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    473             <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
    474             <td colspan="2">
    475                 <input name="val_max_#CLE" type="text" value="#ENV{val_max_#CLE}"/>
    476                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#CLE})</div>]
    477             </td>
    478         </tr>
    479 
    480         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    481             <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
    482             <td colspan="2">
    483                 <input name="pas_var_#CLE" type="text" value="#ENV{pas_var_#CLE}"/>
    484                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#CLE})</div>]
    485             </td>
    486         </tr>
    487 
    488 </BOUCLE_caract>
    489         <tr id="surverseField" style="display: [(#ENV{OuvrageType}|match{^(vRect|vCirc|vTrap)$}|?{'table-row', 'none'})]">
    490             <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:surverse:></div></td>
    491         </tr>
    492 
    493         <tr id="SurverseEnabled" style="display: [(#ENV{OuvrageType}|match{^(vRect|vCirc|vTrap)$}|?{'table-row', 'none'})]">
    494             <td align="right">
    495                 <:hydraulic:surverse:> :
    496             </td>
    497             <td>
    498                 <input type="checkbox" id="affSurverse" name="SurverseEnabled" onclick="afficher_cacher_surverse()" [(#ENV{SurverseEnabled}|=={'on'}|?{'checked', ''})]/>
    499                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    500             </td>
    501         </tr>
    502 
    503         <tr id="loi_debit_surverse" style="display:[(#ENV{SurverseEnabled}|=={'on'}|?{'table-row','none'})];">
    504             <td align="right" width="30%">
    505                 <:hydraulic:loi_debit:> :
    506             </td>
    507 
    508             <td colspan="4" width="70%">
    509 
    510                 <select name="SurverseLoi" id="choix_surverse">
    511                 <BOUCLE_champsNSurverse(POUR){tableau #ENV{surverse}}>
    512                     #SET{tabV2, #VALEUR}
    513                     <BOUCLE_conditionsurv(CONDITION){si #CLE|=={'loi_debit'}}>
    514                         <BOUCLE_champsNSurverse2(POUR){tableau #GET{tabV2}}>
    515                             <option value="[(#VALEUR|table_valeur{0})]" [(#ENV{SurverseLoi}|=={[(#VALEUR|table_valeur{0})]}|?{'selected',''})]>[(#VALEUR|table_valeur{1}|traduction_hydraulic)]</option>
    516                         </BOUCLE_champsNSurverse2>
    517                     </BOUCLE_conditionsurv>
    518                 </BOUCLE_champsNSurverse>
    519                 </select>
    520 
    521                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    522             </td>
    523         </tr>
    524 
    525 <BOUCLE_champsSurverse(POUR){tableau #ENV{surverse}}>
    526         <BOUCLE_conditionLDebit(CONDITION){si #CLE|!={'loi_debit'}}>
    527         <tr id="[(#CLE)]_field_surverse" style="display:[(#ENV{SurverseEnabled}|=={'on'}|?{'table-row','none'})];">
    528             <td align="right">
    529                 [(#ENV{surverse}|table_valeur{#CLE}|table_valeur{0}|traduction_hydraulic)] :
    530             </td>
    531 
    532             <td>
    533                 <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE"/>
    534                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
    535             </td>
    536 
    537             <td align="center">
    538                 <input type="radio" id="calcul_val_#CLE" name="choix_champs_#CLE" value="calcul_val_#CLE" onclick="gestion_radios('#CLE', 'calcul_val_#CLE')" [(#ENV{choix_champs_#CLE}|=={calcul_val_#CLE}?{'checked',''})]/>
    539             </td>
    540 
    541             <td align="center">
    542                 <input type="radio" id="varier_val_#CLE" name="choix_champs_#CLE" value="varier_val_#CLE" onclick="gestion_radios('#CLE', 'varier_val_#CLE')"[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}?{'checked',''})]/>
    543             </td>
    544 
    545             <td align="center">
    546                 <input type="radio" id="val_fixe_#CLE" name="choix_champs_#CLE" value="val_fixe_#CLE" onclick="gestion_radios('#CLE', 'val_fixe_#CLE')"[(#ENV{choix_champs_#CLE}|=={val_fixe_#CLE}?{'checked',''})]/>
    547             </td>
    548         </tr>
    549 
    550         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    551             <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
    552             <td colspan="2">
    553                 <input name="val_min_#CLE" type="text" value="#ENV{val_min_#CLE}"/>
    554                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#CLE})</div>]
    555             </td>
    556         </tr>
    557 
    558         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    559             <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
    560             <td colspan="2">
    561                 <input name="val_max_#CLE" type="text" value="#ENV{val_max_#CLE}"/>
    562                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#CLE})</div>]
    563             </td>
    564         </tr>
    565 
    566         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    567             <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
    568             <td colspan="2">
    569                 <input name="pas_var_#CLE" type="text" value="#ENV{pas_var_#CLE}"/>
    570                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#CLE})</div>]
    571             </td>
    572         </tr>
    573         </BOUCLE_conditionLDebit>
    574 </BOUCLE_champsSurverse>
    575 
    576 <BOUCLE_caractFixe(POUR){tableau #ENV{caract_fixes}}>
    577 
    578         <tr id="[(#VALEUR|table_valeur{0})]">
    579             <td colspan="5"><div class="hyd_formulaire_chapitre">[(#VALEUR|table_valeur{0}|traduction_hydraulic)]</div></td>
    580         </tr>
    581         #SET{valFixe2, #VALEUR|table_valeur{1}}
    582     <BOUCLE_condPasPrec(CONDITION){si #VALEUR|table_valeur{0}|!= {'param_calcul'}}>
    583     <BOUCLE_caractFixe2(POUR){tableau #GET{valFixe2}}>
    584         <tr id="ouvrage_#CLE">
    585             <td align="right">
    586                 [(#VALEUR|table_valeur{0}|traduction_hydraulic)] :
    587             </td>
    588 
    589             <td>
    590                 <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE"/>
    591                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
    592             </td>
    593 
    594             <td align="center">
    595                 <input type="radio" id="calcul_val_#CLE" name="choix_champs_#CLE" value="calcul_val_#CLE" onclick="gestion_radios('#CLE', 'calcul_val_#CLE')" [(#ENV{choix_champs_#CLE}|=={calcul_val_#CLE}?{'checked',''})]/>
    596             </td>
    597 
    598             <td align="center">
    599                 <input type="radio" id="varier_val_#CLE" name="choix_champs_#CLE" value="varier_val_#CLE" onclick="gestion_radios('#CLE', 'varier_val_#CLE')"[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}?{'checked',''})]/>
    600             </td>
    601 
    602             <td align="center">
    603                 <input type="radio" id="val_fixe_#CLE" name="choix_champs_#CLE" value="val_fixe_#CLE" onclick="gestion_radios('#CLE', 'val_fixe_#CLE')"[(#ENV{choix_champs_#CLE}|=={val_fixe_#CLE}?{'checked',''})]/>
    604             </td>
    605         </tr>
    606 
    607         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    608             <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
    609             <td colspan="2">
    610                 <input name="val_min_#CLE" type="text" value="#ENV{val_min_#CLE}"/>
    611                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#CLE})</div>]
    612             </td>
    613         </tr>
    614 
    615         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    616             <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
    617             <td colspan="2">
    618                 <input name="val_max_#CLE" type="text" value="#ENV{val_max_#CLE}"/>
    619                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#CLE})</div>]
    620             </td>
    621         </tr>
    622 
    623         <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
    624             <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
    625             <td colspan="2">
    626                 <input name="pas_var_#CLE" type="text" value="#ENV{pas_var_#CLE}"/>
    627                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#CLE})</div>]
    628             </td>
    629         </tr>
    630     </BOUCLE_caractFixe2>
    631     </BOUCLE_condPasPrec>
    632 
    633     <BOUCLE_caractFixe3(POUR){tableau #GET{valFixe2}}>
    634         <tr id="ouvrage_#CLE">
    635             <td align="right" width="30%">
    636                 [(#VALEUR|table_valeur{0}|traduction_hydraulic)] :
    637             </td>
    638 
    639             <td colspan="4" width="70%">
    640                 <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE" [(#ENV{choix_champs_#CLE}|match{^((calcul_val_#CLE)|(varier_val_#CLE))$}|?{'disabled="true"',''})]/>
    641                 [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
    642             </td>
    643         </tr>
    644     </BOUCLE_caractFixe3>
    645     <//B_condPasPrec>
    646 </BOUCLE_caractFixe>
    647 
    648         <tr>
    649             <td colspan="4" class="hyd_bouton_submit">
    650                <input type="submit" value="<:hydraulic:calculer:>">
    651             </td>
    652          </tr>
    653 
    654       </tbody>
    655    </table>
     362        #ACTION_FORMULAIRE{#ENV{action}}
     363        <table class="hyd_formulaire">
     364                <tbody>
     365
     366                        <tr id="ch_ouvrage_field">
     367                                <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:type_ouvrage:></div></td>
     368                        </tr>
     369
     370                        <tr id="type_ouvrage">
     371                                <td align="right" width="30%">
     372                                        <:hydraulic:choix_ouvrage:> :
     373                                </td>
     374
     375                                <td colspan="4" width="70%">
     376                                        <select name="OuvrageType" id="choix_ouvrage" onChange="affichageEtValeur()">
     377                                                <BOUCLE_OuvrageTypes(POUR){tableau #ENV{mes_saisies}}>
     378                                                        <option value="#CLE" [(#ENV{OuvrageType}|=={#CLE}|?{'selected',''})]>[(#VALEUR|table_valeur{0}|traduction_hydraulic)]</option>
     379                                                </BOUCLE_OuvrageTypes>
     380                                        </select>
     381
     382                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
     383                                </td>
     384
     385                        </tr>
     386
     387                        <tr id="equation_debit">
     388                                <td align="right" width="30%">
     389                                        <:hydraulic:loi_debit:> :
     390                                </td>
     391
     392                                <td colspan="4" width="70%">
     393                                        <select name="OuvrageLoi" id="choix_equation_debit">
     394                                                <BOUCLE_choixEquat(POUR){tableau #ENV{numLoi}}>
     395                                                        #SET{numLoi, #CLE}
     396                                                        <BOUCLE_tabMesSaisies(POUR){tableau #ENV{mes_saisies}}>
     397                                                                #SET{val2-0, #VALEUR|table_valeur{2}}
     398                                                                <BOUCLE_conditionAff(CONDITION){si #ENV{OuvrageType}|=={#CLE}}>
     399                                                                        <BOUCLE_tabMesSaisies2(POUR){tableau #GET{val2-0}}>
     400                                                                                <BOUCLE_numeroLoi(CONDITION){si #GET{numLoi}|=={#VALEUR|table_valeur{0}}}>
     401                                                                                        #SET{affichage, #GET{numLoi}}
     402                                                                                </BOUCLE_numeroLoi>
     403                                                                        </BOUCLE_tabMesSaisies2>
     404                                                                </BOUCLE_conditionAff>
     405                                                        </BOUCLE_tabMesSaisies>
     406                                                        <option value="#CLE" [(#ENV{OuvrageLoi}|=={#CLE}|?{'selected',''})] style="display: [(#CLE|=={#GET{affichage}}|?{'list-item','none'})]">[(#VALEUR|traduction_hydraulic)]</option>
     407                                                </BOUCLE_choixEquat>
     408                                        </select>
     409
     410                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
     411                                </td>
     412                        </tr>
     413
     414                        <tr id="caract_ouvrages">
     415                                <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:caract_ouvrages:></div></td>
     416                        </tr>
     417
     418                        <tr>
     419                                <td colspan="2"></td>
     420                                <td align="center"><:hydraulic:calcul_val:></td>
     421                                <td align="center"><:hydraulic:varier_val:></td>
     422                                <td align="center"><:hydraulic:fixer_val:></td>
     423                        </tr>
     424
     425
     426                        <BOUCLE_caract(POUR) {tableau #ENV{OuvrageCaract}}>
     427                                #SET{cleLibOuv, #CLE}
     428                                <BOUCLE_tableauSaisies(POUR){tableau #ENV{mes_saisies}}>
     429                                        #SET{ident_cle_field, #CLE}
     430                                        <BOUCLE_tableauSaisies2(POUR){tableau #VALEUR|table_valeur{1}}>
     431                                                #SET{cleValeur, #CLE}
     432                                                <BOUCLE_condLib(CONDITION){si #ENV{OuvrageType}|=={#GET{ident_cle_field}}}>
     433                                                        <BOUCLE_condLib2(CONDITION){si #GET{cleValeur}|=={#GET{cleLibOuv}}}>
     434                                                                #SET{afficher_cle, #CLE}
     435                                                        </BOUCLE_condLib2>
     436                                                </BOUCLE_condLib>
     437                                        </BOUCLE_tableauSaisies2>
     438                                </BOUCLE_tableauSaisies>
     439
     440                                <tr id="ouvrage_#CLE" style="display: [(#GET{afficher_cle}|=={#CLE}|?{'table-row','none'})]">
     441                                        <td align="right">
     442                                                [(#VALEUR|table_valeur{0}|traduction_hydraulic)] :
     443                                        </td>
     444
     445                                        <td>
     446                                                <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE"/>
     447                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
     448                                        </td>
     449
     450                                        <td align="center">
     451                                                <input type="radio" id="calcul_val_#CLE" name="choix_champs_#CLE" value="calcul_val_#CLE" onclick="gestion_radios('#CLE', 'calcul_val_#CLE')" [(#ENV{choix_champs_#CLE}|=={calcul_val_#CLE}?{'checked',''})]/>
     452                                        </td>
     453
     454                                        <td align="center">
     455                                                <input type="radio" id="varier_val_#CLE" name="choix_champs_#CLE" value="varier_val_#CLE" onclick="gestion_radios('#CLE', 'varier_val_#CLE')"[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}?{'checked',''})]/>
     456                                        </td>
     457
     458                                        <td align="center">
     459                                                <input type="radio" id="val_fixe_#CLE" name="choix_champs_#CLE" value="val_fixe_#CLE" onclick="gestion_radios('#CLE', 'val_fixe_#CLE')"[(#ENV{choix_champs_#CLE}|=={val_fixe_#CLE}?{'checked',''})]/>
     460                                        </td>
     461                                </tr>
     462
     463                                <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     464                                        <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
     465                                        <td colspan="2">
     466                                                <input name="val_min_#CLE" type="text" value="#ENV{val_min_#CLE}"/>
     467                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#CLE})</div>]
     468                                        </td>
     469                                </tr>
     470
     471                                <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     472                                        <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
     473                                        <td colspan="2">
     474                                                <input name="val_max_#CLE" type="text" value="#ENV{val_max_#CLE}"/>
     475                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#CLE})</div>]
     476                                        </td>
     477                                </tr>
     478
     479                                <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     480                                        <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
     481                                        <td colspan="2">
     482                                                <input name="pas_var_#CLE" type="text" value="#ENV{pas_var_#CLE}"/>
     483                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#CLE})</div>]
     484                                        </td>
     485                                </tr>
     486
     487                        </BOUCLE_caract>
     488                        <tr id="surverseField" style="display: [(#ENV{OuvrageType}|match{^(vRect|vCirc|vTrap)$}|?{'table-row', 'none'})]">
     489                                <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:surverse:></div></td>
     490                        </tr>
     491
     492                        <tr id="SurverseEnabled" style="display: [(#ENV{OuvrageType}|match{^(vRect|vCirc|vTrap)$}|?{'table-row', 'none'})]">
     493                                <td align="right">
     494                                        <:hydraulic:surverse:> :
     495                                </td>
     496                                <td>
     497                                        <input type="checkbox" id="affSurverse" name="SurverseEnabled" onclick="afficher_cacher_surverse()" [(#ENV{SurverseEnabled}|=={'on'}|?{'checked', ''})]/>
     498                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
     499                                </td>
     500                        </tr>
     501
     502                        <tr id="loi_debit_surverse" style="display:[(#ENV{SurverseEnabled}|=={'on'}|?{'table-row','none'})];">
     503                                <td align="right" width="30%">
     504                                        <:hydraulic:loi_debit:> :
     505                                </td>
     506
     507                                <td colspan="4" width="70%">
     508
     509                                        <select name="SurverseLoi" id="choix_surverse">
     510                                                <BOUCLE_champsNSurverse(POUR){tableau #ENV{surverse}}>
     511                                                        #SET{tabV2, #VALEUR}
     512                                                        <BOUCLE_conditionsurv(CONDITION){si #CLE|=={'loi_debit'}}>
     513                                                                <BOUCLE_champsNSurverse2(POUR){tableau #GET{tabV2}}>
     514                                                                        <option value="[(#VALEUR|table_valeur{0})]" [(#ENV{SurverseLoi}|=={[(#VALEUR|table_valeur{0})]}|?{'selected',''})]>[(#VALEUR|table_valeur{1}|traduction_hydraulic)]</option>
     515                                                                </BOUCLE_champsNSurverse2>
     516                                                        </BOUCLE_conditionsurv>
     517                                                </BOUCLE_champsNSurverse>
     518                                        </select>
     519
     520                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
     521                                </td>
     522                        </tr>
     523
     524                        <BOUCLE_champsSurverse(POUR){tableau #ENV{surverse}}>
     525                                <BOUCLE_conditionLDebit(CONDITION){si #CLE|!={'loi_debit'}}>
     526                                        <tr id="[(#CLE)]_field_surverse" style="display:[(#ENV{SurverseEnabled}|=={'on'}|?{'table-row','none'})];">
     527                                                <td align="right">
     528                                                        [(#ENV{surverse}|table_valeur{#CLE}|table_valeur{0}|traduction_hydraulic)] :
     529                                                </td>
     530
     531                                                <td>
     532                                                        <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE"/>
     533                                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
     534                                                </td>
     535
     536                                                <td align="center">
     537                                                        <input type="radio" id="calcul_val_#CLE" name="choix_champs_#CLE" value="calcul_val_#CLE" onclick="gestion_radios('#CLE', 'calcul_val_#CLE')" [(#ENV{choix_champs_#CLE}|=={calcul_val_#CLE}?{'checked',''})]/>
     538                                                </td>
     539
     540                                                <td align="center">
     541                                                        <input type="radio" id="varier_val_#CLE" name="choix_champs_#CLE" value="varier_val_#CLE" onclick="gestion_radios('#CLE', 'varier_val_#CLE')"[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}?{'checked',''})]/>
     542                                                </td>
     543
     544                                                <td align="center">
     545                                                        <input type="radio" id="val_fixe_#CLE" name="choix_champs_#CLE" value="val_fixe_#CLE" onclick="gestion_radios('#CLE', 'val_fixe_#CLE')"[(#ENV{choix_champs_#CLE}|=={val_fixe_#CLE}?{'checked',''})]/>
     546                                                </td>
     547                                        </tr>
     548
     549                                        <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     550                                                <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
     551                                                <td colspan="2">
     552                                                        <input name="val_min_#CLE" type="text" value="#ENV{val_min_#CLE}"/>
     553                                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#CLE})</div>]
     554                                                </td>
     555                                        </tr>
     556
     557                                        <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     558                                                <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
     559                                                <td colspan="2">
     560                                                        <input name="val_max_#CLE" type="text" value="#ENV{val_max_#CLE}"/>
     561                                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#CLE})</div>]
     562                                                </td>
     563                                        </tr>
     564
     565                                        <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     566                                                <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
     567                                                <td colspan="2">
     568                                                        <input name="pas_var_#CLE" type="text" value="#ENV{pas_var_#CLE}"/>
     569                                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#CLE})</div>]
     570                                                </td>
     571                                        </tr>
     572                                </BOUCLE_conditionLDebit>
     573                        </BOUCLE_champsSurverse>
     574
     575                        <BOUCLE_caractFixe(POUR){tableau #ENV{caract_fixes}}>
     576
     577                                <tr id="[(#VALEUR|table_valeur{0})]">
     578                                        <td colspan="5"><div class="hyd_formulaire_chapitre">[(#VALEUR|table_valeur{0}|traduction_hydraulic)]</div></td>
     579                                </tr>
     580                                #SET{valFixe2, #VALEUR|table_valeur{1}}
     581                                <BOUCLE_condPasPrec(CONDITION){si #VALEUR|table_valeur{0}|!= {'param_calcul'}}>
     582                                        <BOUCLE_caractFixe2(POUR){tableau #GET{valFixe2}}>
     583                                                <tr id="ouvrage_#CLE">
     584                                                        <td align="right">
     585                                                                [(#VALEUR|table_valeur{0}|traduction_hydraulic)] :
     586                                                        </td>
     587
     588                                                        <td>
     589                                                                <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE"/>
     590                                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
     591                                                        </td>
     592
     593                                                        <td align="center">
     594                                                                <input type="radio" id="calcul_val_#CLE" name="choix_champs_#CLE" value="calcul_val_#CLE" onclick="gestion_radios('#CLE', 'calcul_val_#CLE')" [(#ENV{choix_champs_#CLE}|=={calcul_val_#CLE}?{'checked',''})]/>
     595                                                        </td>
     596
     597                                                        <td align="center">
     598                                                                <input type="radio" id="varier_val_#CLE" name="choix_champs_#CLE" value="varier_val_#CLE" onclick="gestion_radios('#CLE', 'varier_val_#CLE')"[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}?{'checked',''})]/>
     599                                                        </td>
     600
     601                                                        <td align="center">
     602                                                                <input type="radio" id="val_fixe_#CLE" name="choix_champs_#CLE" value="val_fixe_#CLE" onclick="gestion_radios('#CLE', 'val_fixe_#CLE')"[(#ENV{choix_champs_#CLE}|=={val_fixe_#CLE}?{'checked',''})]/>
     603                                                        </td>
     604                                                </tr>
     605
     606                                                <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     607                                                        <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
     608                                                        <td colspan="2">
     609                                                                <input name="val_min_#CLE" type="text" value="#ENV{val_min_#CLE}"/>
     610                                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#CLE})</div>]
     611                                                        </td>
     612                                                </tr>
     613
     614                                                <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     615                                                        <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
     616                                                        <td colspan="2">
     617                                                                <input name="val_max_#CLE" type="text" value="#ENV{val_max_#CLE}"/>
     618                                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#CLE})</div>]
     619                                                        </td>
     620                                                </tr>
     621
     622                                                <tr class="champs_var_#CLE" style="display:[(#ENV{choix_champs_#CLE}|=={varier_val_#CLE}|?{'table-row','none'})];">
     623                                                        <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
     624                                                        <td colspan="2">
     625                                                                <input name="pas_var_#CLE" type="text" value="#ENV{pas_var_#CLE}"/>
     626                                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#CLE})</div>]
     627                                                        </td>
     628                                                </tr>
     629                                        </BOUCLE_caractFixe2>
     630                                </BOUCLE_condPasPrec>
     631
     632                                <BOUCLE_caractFixe3(POUR){tableau #GET{valFixe2}}>
     633                                        <tr id="ouvrage_#CLE">
     634                                                <td align="right" width="30%">
     635                                                        [(#VALEUR|table_valeur{0}|traduction_hydraulic)] :
     636                                                </td>
     637
     638                                                <td colspan="4" width="70%">
     639                                                        <input id="caract_#CLE" type="text" value="#ENV{#CLE}" maxlength="30" name="#CLE" [(#ENV{choix_champs_#CLE}|match{^((calcul_val_#CLE)|(varier_val_#CLE))$}|?{'disabled="true"',''})]/>
     640                                                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#CLE})</div>]
     641                                                </td>
     642                                        </tr>
     643                                </BOUCLE_caractFixe3>
     644                                <//B_condPasPrec>
     645                        </BOUCLE_caractFixe>
     646
     647                        <tr>
     648                                <td colspan="4" class="hyd_bouton_submit">
     649                                        <input type="submit" value="<:hydraulic:calculer:>">
     650                                </td>
     651                        </tr>
     652
     653                </tbody>
     654        </table>
    656655</form>
    657656
  • _plugins_/hydraulic/trunk/formulaires/calcul_ouvrages.php

    r95855 r96562  
    2222 */
    2323
    24 function numLoi(){
    25 
    26     $numLoi = array(
    27         1 => 'or_cemagref88',
    28         //2 => 's_cemagref88',
    29         3 => 's_denoye',
    30         4 => 's_noye',
    31         5 => 'v_denoye',
    32         6 => 'v_noye',
    33         //7 => 'cunge',
    34         //8 => 'or_cemagref02',
    35         //9 => 's_cemagref02'
    36     );
    37 
    38     return $numLoi;
    39 }
    40 
    41 function champsLib(){
    42 
    43     $libVar = array(
    44         'L'  => array('param_L', 2),
    45         'W'  => array('param_W', 0.5),
    46         'C'  => array('param_C', 0.4),
    47         'LF' => array('param_LF', 2),
    48         'CR' => array('param_CR', 0.4),
    49         'CT' => array('param_CT', 0.5),
    50         'F'  => array('param_F', 0.56)
    51     );
    52 
    53     return $libVar;
    54 }
    55 
    56 function mes_saisies_surverse(){
    57     $num_equation = array(1, 2, 3, 4, 7);
    58     $numLoi = numLoi();
    59     $surverse = array(
    60         'H'    => array('param_H', 1),
    61         'CS'    => array('param_C', 0.4)
    62     );
    63 
    64     foreach($num_equation as $valeur){
    65         if(isset($numLoi[$valeur])) {
    66             $surverse['loi_debit'][] = array($valeur, $numLoi[$valeur]);
    67         }
    68     }
    69 
    70     return $surverse;
    71 }
    72 
    73 function mes_saisies_caract_fixe(){
    74     $caract_fixe = array(
    75         array(
    76             'caract_globale',
    77              array(
    78                     'Q'    =>array('param_Q', 2),
    79                     'ZM'   =>array('param_ZM', 1.5),
    80                     'ZV'   =>array('param_ZV', 1),
    81                   )
    82         ),
    83 
    84         array(
    85             'param_calcul',
    86              array(
    87                     'rPrec' =>array('precision', 0.001)
    88                   )
    89         )
    90     );
    91 
    92     return $caract_fixe;
    93 }
    94 
    95 function mes_saisies_ouvrages(){
    96     $numLoi = numLoi();
    97     $champsLib = champsLib();
    98     $mes_saisies = array(
    99         'vRect' => array(
    100             'vanne_rect',
    101             array( 'L', 'W', 'C'),
    102             array(1, 2, 5, 6, 7),
    103             true
    104         ),
    105 
    106         'vCirc' => array(
    107             'vanne_circ',
    108             array( 'L', 'W', 'C'),
    109             array(1, 2, 5, 6, 7),
    110             true
    111         ),
    112 
    113         'sRect' => array(
    114             'seuil_rect',
    115             array( 'L', 'C'),
    116             array(1, 2, 3, 4, 7),
    117             false
    118         ),
    119 
    120         'sTrap' => array(
    121             'seuil_trap',
    122             array( 'LF', 'CR', 'CT', 'F'),
    123             array(8,9),
    124             false
    125         ),
    126 
    127         'vTrap' => array(
    128             'vanne_trap',
    129             array( 'LF', 'CR', 'CT', 'F'),
    130             array(8,9),
    131             true
    132         ),
    133     );
    134 
    135     $mes_saisies_ouv = array();
    136 
    137     /* Structure de $mes_saisies_ouv
    138     * $mes_saisies_ouv=array
    139     *      0:Code de type d'ouvrage
    140     *      1:array
    141     *          Code de caractéristique:array
    142     *              0:Code de traduction de la caractéristique
    143     *              1:Valeur par défaut
    144     *      2:array
    145     *          0,1,2:array
    146     *              0:n° de loi
    147     *              1:Code de traduction de la loi
    148     */
    149 
    150     foreach($mes_saisies as $cleF=>$valeurTab){
    151         $mes_saisies_ouv[$cleF][0] = $valeurTab[0];
    152         foreach($valeurTab[1] as $valeur){
    153             $mes_saisies_ouv[$cleF][1][$valeur]= $champsLib[$valeur];
    154         }
    155         $mes_saisies_ouv[$cleF][2]=array();
    156         foreach($valeurTab[2] as $valeur){
    157             if(isset($numLoi[$valeur])) {
    158                 $mes_saisies_ouv[$cleF][2][]= array($valeur, $numLoi[$valeur]);
    159             }
    160         }
    161         $mes_saisies_ouv[$cleF][3] = $valeurTab[3];
    162     }
    163     return $mes_saisies_ouv;
    164 
    165 }
    166 
    167 function champs_obligatoires($bCalc = false){
    168     /*
    169     * Ce tableau contient la liste de tous les champs du formulaire.
    170     * La suite de cette fonction se chargera de supprimer les valeurs non obligatoires.
    171     */
    172     spip_log('champs_obligatoires','hydraulic.'._LOG_DEBUG);
    173     $nTypeOuv = _request('OuvrageType');
    174     $mes_saisies = mes_saisies_ouvrages();
    175     $tChOblig = array('OuvrageType','OuvrageLoi');
    176     $tChCalc = array_keys($mes_saisies[$nTypeOuv][1]); // Champs dépendants du type d'ouvrage
    177     if(_request('SurverseEnabled')) {
    178         // Si la surverse est sélectionnée, on ajoute les champs concernant la surverse
    179         array_push($tChCalc,'H','CS');
    180         $tChOblig[] = 'SurverseLoi';
    181     }
    182     // On ajoute les caractéristiques fixes quelque soit le type d'ouvrage
    183     $mes_saisies = mes_saisies_caract_fixe();
    184     $tChCalc = array_merge($tChCalc,array_keys($mes_saisies[0][1]));
    185     $tChCalc = array_merge($tChCalc,array_keys($mes_saisies[1][1]));
    186     $tChOblig[] = 'rPrec';
    187     $tChOblig = array_merge($tChOblig,$tChCalc);
    188 
    189     $choix_champs = array();
    190     foreach($tChCalc as $cle){
    191         $choix_champs[$cle] = _request('choix_champs_'.$cle);
    192     }
    193 
    194     foreach($choix_champs as $cle=>$valeur){
    195         spip_log('Choix champ '.$cle.'=>'.$valeur,'hydraulic.'._LOG_DEBUG);
    196         // Si le choix du select est de calculer une valeur...
    197         if(substr($valeur, 0,3) != 'val'){
    198             foreach($tChOblig as $cle1=>$valeur1){
    199                 if($cle == $valeur1){
    200                     // ... alors on peut supprimer de notre tableau le champs calculé (il n'est pas obligatoire car grisé)
    201                     //unset($tChOblig[$cle1]);
    202                     // Renumérotation des clés du tableau
    203                     $tChOblig = array_values($tChOblig);
    204                 }
    205             }
    206         }
    207         // Si le choix du select est de faire varier une valeur alors on ajoute les 3 champs nécessaires
    208         if(substr($valeur, 0, 3) == 'var'){
    209             $tChOblig[] = 'val_min_'.$cle;
    210             $tChOblig[] = 'val_max_'.$cle;
    211             $tChOblig[] = 'pas_var_'.$cle;
    212         }
    213     }
    214     spip_log($tChOblig,'hydraulic.'._LOG_DEBUG);
    215     spip_log($tChCalc,'hydraulic.'._LOG_DEBUG);
    216     if($bCalc) {
    217         return $tChCalc;
    218     }
    219     else {
    220         return $tChOblig;
    221     }
     24function numLoi() {
     25
     26        $numLoi = array(
     27                1 => 'or_cemagref88',
     28                //2 => 's_cemagref88',
     29                3 => 's_denoye',
     30                4 => 's_noye',
     31                5 => 'v_denoye',
     32                6 => 'v_noye',
     33                //7 => 'cunge',
     34                //8 => 'or_cemagref02',
     35                //9 => 's_cemagref02'
     36        );
     37
     38        return $numLoi;
     39}
     40
     41function champsLib() {
     42
     43        $libVar = array(
     44                'L'  => array('param_L', 2),
     45                'W'  => array('param_W', 0.5),
     46                'C'  => array('param_C', 0.4),
     47                'LF' => array('param_LF', 2),
     48                'CR' => array('param_CR', 0.4),
     49                'CT' => array('param_CT', 0.5),
     50                'F'  => array('param_F', 0.56)
     51        );
     52
     53        return $libVar;
     54}
     55
     56function mes_saisies_surverse() {
     57        $num_equation = array(1, 2, 3, 4, 7);
     58        $numLoi = numLoi();
     59        $surverse = array(
     60                'H'    => array('param_H', 1),
     61                'CS'    => array('param_C', 0.4)
     62        );
     63
     64        foreach($num_equation as $valeur) {
     65                if(isset($numLoi[$valeur])) {
     66                        $surverse['loi_debit'][] = array($valeur, $numLoi[$valeur]);
     67                }
     68        }
     69
     70        return $surverse;
     71}
     72
     73function mes_saisies_caract_fixe() {
     74        $caract_fixe = array(
     75                array(
     76                        'caract_globale',
     77                        array(
     78                                'Q'    =>array('param_Q', 2),
     79                                'ZM'   =>array('param_ZM', 1.5),
     80                                'ZV'   =>array('param_ZV', 1),
     81                        )
     82                ),
     83
     84                array(
     85                        'param_calcul',
     86                        array(
     87                                'rPrec' =>array('precision', 0.001)
     88                        )
     89                )
     90        );
     91
     92        return $caract_fixe;
     93}
     94
     95function mes_saisies_ouvrages() {
     96        $numLoi = numLoi();
     97        $champsLib = champsLib();
     98        $mes_saisies = array(
     99                'vRect' => array(
     100                        'vanne_rect',
     101                        array( 'L', 'W', 'C'),
     102                        array(1, 2, 5, 6, 7),
     103                        true
     104                ),
     105
     106                'vCirc' => array(
     107                        'vanne_circ',
     108                        array( 'L', 'W', 'C'),
     109                        array(1, 2, 5, 6, 7),
     110                        true
     111                ),
     112
     113                'sRect' => array(
     114                        'seuil_rect',
     115                        array( 'L', 'C'),
     116                        array(1, 2, 3, 4, 7),
     117                        false
     118                ),
     119
     120                'sTrap' => array(
     121                        'seuil_trap',
     122                        array( 'LF', 'CR', 'CT', 'F'),
     123                        array(8,9),
     124                        false
     125                ),
     126
     127                'vTrap' => array(
     128                        'vanne_trap',
     129                        array( 'LF', 'CR', 'CT', 'F'),
     130                        array(8,9),
     131                        true
     132                ),
     133        );
     134
     135        $mes_saisies_ouv = array();
     136
     137        /** Structure de $mes_saisies_ouv
     138        * $mes_saisies_ouv=array
     139        *      0:Code de type d'ouvrage
     140        *      1:array
     141        *          Code de caractéristique:array
     142        *              0:Code de traduction de la caractéristique
     143        *              1:Valeur par défaut
     144        *      2:array
     145        *          0,1,2:array
     146        *              0:n° de loi
     147        *              1:Code de traduction de la loi
     148        */
     149
     150        foreach($mes_saisies as $cleF=>$valeurTab){
     151                $mes_saisies_ouv[$cleF][0] = $valeurTab[0];
     152                foreach($valeurTab[1] as $valeur){
     153                        $mes_saisies_ouv[$cleF][1][$valeur]= $champsLib[$valeur];
     154                }
     155                $mes_saisies_ouv[$cleF][2]=array();
     156                foreach($valeurTab[2] as $valeur){
     157                        if(isset($numLoi[$valeur])) {
     158                                $mes_saisies_ouv[$cleF][2][]= array($valeur, $numLoi[$valeur]);
     159                        }
     160                }
     161                $mes_saisies_ouv[$cleF][3] = $valeurTab[3];
     162        }
     163        return $mes_saisies_ouv;
     164
     165}
     166
     167function champs_obligatoires($bCalc = false) {
     168        /**
     169        * Ce tableau contient la liste de tous les champs du formulaire.
     170        * La suite de cette fonction se chargera de supprimer les valeurs non obligatoires.
     171        */
     172        spip_log('champs_obligatoires','hydraulic.'._LOG_DEBUG);
     173        $nTypeOuv = _request('OuvrageType');
     174        $mes_saisies = mes_saisies_ouvrages();
     175        $tChOblig = array('OuvrageType','OuvrageLoi');
     176        $tChCalc = array_keys($mes_saisies[$nTypeOuv][1]); // Champs dépendants du type d'ouvrage
     177        if(_request('SurverseEnabled')) {
     178                // Si la surverse est sélectionnée, on ajoute les champs concernant la surverse
     179                array_push($tChCalc,'H','CS');
     180                $tChOblig[] = 'SurverseLoi';
     181        }
     182        // On ajoute les caractéristiques fixes quelque soit le type d'ouvrage
     183        $mes_saisies = mes_saisies_caract_fixe();
     184        $tChCalc = array_merge($tChCalc,array_keys($mes_saisies[0][1]));
     185        $tChCalc = array_merge($tChCalc,array_keys($mes_saisies[1][1]));
     186        $tChOblig[] = 'rPrec';
     187        $tChOblig = array_merge($tChOblig,$tChCalc);
     188
     189        $choix_champs = array();
     190        foreach($tChCalc as $cle){
     191                $choix_champs[$cle] = _request('choix_champs_'.$cle);
     192        }
     193
     194        foreach($choix_champs as $cle=>$valeur){
     195                spip_log('Choix champ '.$cle.'=>'.$valeur,'hydraulic.'._LOG_DEBUG);
     196                // Si le choix du select est de calculer une valeur...
     197                if(substr($valeur, 0,3) != 'val'){
     198                        foreach($tChOblig as $cle1=>$valeur1){
     199                                if($cle == $valeur1){
     200                                        // ... alors on peut supprimer de notre tableau le champs calculé (il n'est pas obligatoire car grisé)
     201                                        //unset($tChOblig[$cle1]);
     202                                        // Renumérotation des clés du tableau
     203                                        $tChOblig = array_values($tChOblig);
     204                                }
     205                        }
     206                }
     207                // Si le choix du select est de faire varier une valeur alors on ajoute les 3 champs nécessaires
     208                if(substr($valeur, 0, 3) == 'var'){
     209                        $tChOblig[] = 'val_min_'.$cle;
     210                        $tChOblig[] = 'val_max_'.$cle;
     211                        $tChOblig[] = 'pas_var_'.$cle;
     212                }
     213        }
     214        spip_log($tChOblig,'hydraulic.'._LOG_DEBUG);
     215        spip_log($tChCalc,'hydraulic.'._LOG_DEBUG);
     216        if($bCalc) {
     217                return $tChCalc;
     218        }
     219        else {
     220                return $tChOblig;
     221        }
    222222}
    223223
    224224
    225225function formulaires_calcul_ouvrages_charger_dist() {
    226     // On charge les saisies et les champs qui nécessitent un accès par les fonctions
    227     $choixOuv = mes_saisies_ouvrages();
    228     $champsLib = champsLib();
    229     $numLoi = numLoi();
    230     $champs_surverse = mes_saisies_surverse();
    231     $caract_fixes = mes_saisies_caract_fixe();
    232     $valeurs = array(
    233         'OuvrageType' => 'vRect',
    234         'OuvrageLoi'=> 1,
    235         'SurverseLoi' => 1,
    236         'SurverseEnabled' => _request('SurverseEnabled'),
    237         'mes_saisies'  => $choixOuv,
    238         'OuvrageCaract' => $champsLib,
    239         'numLoi'       => $numLoi,
    240         'surverse'     => $champs_surverse,
    241         'caract_fixes' => $caract_fixes
    242     );
    243 
    244     foreach($choixOuv as $cleF=>$valeurF){
    245         $cpt = 0;
    246         foreach($valeurF[1] as $cle=>$valeur){
    247             if($cpt == 0){
    248                 $valeurs['choix_champs_'.$cle] = 'calcul_val_'.$cle;
    249                 $cpt++;
    250             }
    251             else{
    252                 $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
    253             }
    254             $valeurs[$cle] = $valeur[1];
    255             $valeurs['val_min_'.$cle] = 1;
    256             $valeurs['val_max_'.$cle] = 2;
    257             $valeurs['pas_var_'.$cle] = 0.1;
    258         }
    259     }
    260 
    261     foreach($champs_surverse as $cle=>$valeur){
    262         if($cle !== 'loi_debit'){
    263             $valeurs[$cle] = $valeur[1];
    264             $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
    265             $valeurs['val_min_'.$cle] = 1;
    266             $valeurs['val_max_'.$cle] = 2;
    267             $valeurs['pas_var_'.$cle] = 0.1;
    268         }
    269     }
    270 
    271     foreach($caract_fixes as $cleF=>$valeurF){
    272         foreach($valeurF[1] as $cle=>$valeur){
    273             $valeurs[$cle] = $valeur[1];
    274             $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
    275             $valeurs['val_min_'.$cle] = 1;
    276             $valeurs['val_max_'.$cle] = 2;
    277             $valeurs['pas_var_'.$cle] = 0.1;
    278         }
    279     }
    280     return $valeurs;
     226        // On charge les saisies et les champs qui nécessitent un accès par les fonctions
     227        $choixOuv = mes_saisies_ouvrages();
     228        $champsLib = champsLib();
     229        $numLoi = numLoi();
     230        $champs_surverse = mes_saisies_surverse();
     231        $caract_fixes = mes_saisies_caract_fixe();
     232        $valeurs = array(
     233                'OuvrageType' => 'vRect',
     234                'OuvrageLoi'=> 1,
     235                'SurverseLoi' => 1,
     236                'SurverseEnabled' => _request('SurverseEnabled'),
     237                'mes_saisies'  => $choixOuv,
     238                'OuvrageCaract' => $champsLib,
     239                'numLoi'       => $numLoi,
     240                'surverse'     => $champs_surverse,
     241                'caract_fixes' => $caract_fixes
     242        );
     243
     244        foreach($choixOuv as $cleF=>$valeurF){
     245                $cpt = 0;
     246                foreach($valeurF[1] as $cle=>$valeur){
     247                        if($cpt == 0){
     248                                $valeurs['choix_champs_'.$cle] = 'calcul_val_'.$cle;
     249                                $cpt++;
     250                        }
     251                        else{
     252                                $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
     253                        }
     254                        $valeurs[$cle] = $valeur[1];
     255                        $valeurs['val_min_'.$cle] = 1;
     256                        $valeurs['val_max_'.$cle] = 2;
     257                        $valeurs['pas_var_'.$cle] = 0.1;
     258                }
     259        }
     260
     261        foreach($champs_surverse as $cle=>$valeur){
     262                if($cle !== 'loi_debit'){
     263                        $valeurs[$cle] = $valeur[1];
     264                        $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
     265                        $valeurs['val_min_'.$cle] = 1;
     266                        $valeurs['val_max_'.$cle] = 2;
     267                        $valeurs['pas_var_'.$cle] = 0.1;
     268                }
     269        }
     270
     271        foreach($caract_fixes as $cleF=>$valeurF){
     272                foreach($valeurF[1] as $cle=>$valeur){
     273                        $valeurs[$cle] = $valeur[1];
     274                        $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
     275                        $valeurs['val_min_'.$cle] = 1;
     276                        $valeurs['val_max_'.$cle] = 2;
     277                        $valeurs['pas_var_'.$cle] = 0.1;
     278                }
     279        }
     280        return $valeurs;
    281281}
    282282
    283283
    284284function formulaires_calcul_ouvrages_verifier_dist() {
    285     $erreurs = array();
    286     return $erreurs;
     285        $erreurs = array();
     286        return $erreurs;
    287287}
    288288
    289289
    290290function formulaires_calcul_ouvrages_traiter_dist() {
    291     include_spip('hyd_inc/cache');
    292     include_spip('hyd_inc/charge_datas');
    293     $datas = charge_datas();
    294 
    295     // Initialisation de la classe chargée d'afficher le journal de calcul
    296     include_spip('hyd_inc/log.class');
    297     $oLog = new cLog();
    298     include_spip('hyd_inc/ouvrage.class');
    299     $Ouv = new cOuvrage($oLog,$datas);
    300     $tsDatas = array('i','min','max','pas');
    301     foreach($tsDatas as $sData) {
    302         ${$sData} = $datas[$sData];
    303     }
    304     $tFlags = array();
    305     $tAbs = array();
    306     $tRes = array();
    307     $rInit = $datas[$datas['ValCal']];
    308 
    309     for($i = $min; $i <= $max; $i+= $pas){
    310         if(isset($datas['ValVar'])) {
    311             $Ouv->Set($datas['ValVar'],$i);
    312         }
    313         if(end($tRes)!==false) {
    314             // Solution initiale = dernière solution trouvée
    315             $rInit = end($tRes);
    316         }
    317         $tAbs[] = $i;
    318         list($tRes[],$tFlag[]) = $Ouv->Calc($datas['ValCal'],max(1,$rInit));
    319     }
    320 
    321     $tLibFlag = array(
    322         -1  => 'erreur_calcul',
    323         0   => 'débit_nul',
    324         1   => 'libre_den',
    325         2   => 'libre_noy',
    326         3   => 'charge_den',
    327         4   => 'charge_noy_part',
    328         5   => 'charge_noy_tot',
    329         11  => 'surverse_den',
    330         12  => 'surverse_noy');
    331     $tsFlag = array();
    332     foreach($tFlag as $Flag) {
    333         $tsFlag[] = $tLibFlag[$Flag];
    334     }
    335     include_spip('hyd_inc/affiche_resultats');
    336     unset($datas['tLib']['rPrec']);
    337     $res['message_ok'] = AfficheResultats($datas, $tAbs, $tRes, $tsFlag);
    338     return $res;
     291        include_spip('hyd_inc/cache');
     292        include_spip('hyd_inc/charge_datas');
     293        $datas = charge_datas();
     294
     295        // Initialisation de la classe chargée d'afficher le journal de calcul
     296        include_spip('hyd_inc/log.class');
     297        $oLog = new cLog();
     298        include_spip('hyd_inc/ouvrage.class');
     299        $Ouv = new cOuvrage($oLog,$datas);
     300        $tsDatas = array('i','min','max','pas');
     301        foreach($tsDatas as $sData) {
     302                ${$sData} = $datas[$sData];
     303        }
     304        $tFlags = array();
     305        $tAbs = array();
     306        $tRes = array();
     307        $rInit = $datas[$datas['ValCal']];
     308
     309        for($i = $min; $i <= $max; $i+= $pas){
     310                if(isset($datas['ValVar'])) {
     311                        $Ouv->Set($datas['ValVar'],$i);
     312                }
     313                if(end($tRes)!==false) {
     314                        // Solution initiale = dernière solution trouvée
     315                        $rInit = end($tRes);
     316                }
     317                $tAbs[] = $i;
     318                list($tRes[],$tFlag[]) = $Ouv->Calc($datas['ValCal'],max(1,$rInit));
     319        }
     320
     321        $tLibFlag = array(
     322                -1  => 'erreur_calcul',
     323                0   => 'débit_nul',
     324                1   => 'libre_den',
     325                2   => 'libre_noy',
     326                3   => 'charge_den',
     327                4   => 'charge_noy_part',
     328                5   => 'charge_noy_tot',
     329                11  => 'surverse_den',
     330                12  => 'surverse_noy'
     331        );
     332        $tsFlag = array();
     333        foreach($tFlag as $Flag) {
     334                $tsFlag[] = $tLibFlag[$Flag];
     335        }
     336        include_spip('hyd_inc/affiche_resultats');
     337        unset($datas['tLib']['rPrec']);
     338        $res['message_ok'] = AfficheResultats($datas, $tAbs, $tRes, $tsFlag);
     339        return $res;
    339340}
    340341?>
    341 
  • _plugins_/hydraulic/trunk/formulaires/calcul_regime_uniforme.html

    r95855 r96562  
    33
    44<form method="post" action="#ENV{action}" id="form_regime_uniforme">
    5     #ACTION_FORMULAIRE{#ENV{action}}
    6     <table class="hyd_formulaire">
    7         <tbody>
     5        #ACTION_FORMULAIRE{#ENV{action}}
     6        <table class="hyd_formulaire">
     7                <tbody>
    88
    9             <!-- On génère les champs du formulaire en suivant le tableau saisies -->
    10             <INCLURE{fond=hyd_inc/formulaire_champs,env}>
     9                        <!-- On génère les champs du formulaire en suivant le tableau saisies -->
     10                        <INCLURE{fond=hyd_inc/formulaire_champs,env}>
    1111
    12             <tr>
    13                 <td colspan="4" class="hyd_bouton_submit">
    14                    <input type="submit" value="<:hydraulic:calculer:>">
    15                 </td>
    16             </tr>
     12                        <tr>
     13                                <td colspan="4" class="hyd_bouton_submit">
     14                                        <input type="submit" value="<:hydraulic:calculer:>">
     15                                </td>
     16                        </tr>
    1717
    18       </tbody>
    19    </table>
     18                </tbody>
     19        </table>
    2020</form>
    2121
    2222<script language="javascript">
    23     // Affichage des champs du type de section sélectionné uniquement
    24     sectionDisplayFieldset();
     23        // Affichage des champs du type de section sélectionné uniquement
     24        sectionDisplayFieldset();
    2525</script>
    2626[<div id="hyd_resultat">(#ENV*{message_ok})</div>]
  • _plugins_/hydraulic/trunk/formulaires/calcul_regime_uniforme.php

    r95855 r96562  
    2929
    3030function formulaires_calcul_regime_uniforme_charger_dist() {
    31     global $FRU;
    32     return $FRU->charger();
     31        global $FRU;
     32        return $FRU->charger();
    3333}
    3434
    3535
    36 function formulaires_calcul_regime_uniforme_verifier_dist(){
    37     global $FRU;
    38     return $FRU->verifier();
     36function formulaires_calcul_regime_uniforme_verifier_dist() {
     37        global $FRU;
     38        return $FRU->verifier();
    3939}
    4040
    4141
    4242function formulaires_calcul_regime_uniforme_traiter_dist(){
    43     global $FRU;
    44     return $FRU->traiter();
     43        global $FRU;
     44        return $FRU->traiter();
    4545}
    4646?>
    47 
  • _plugins_/hydraulic/trunk/formulaires/calcul_section.html

    r95855 r96562  
    33
    44<script>
    5 function 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;
    13         }
    14     }
    15     for(var i in ttr) {
    16         document.getElementById(ttr[i]).style.display=bDisplay;
    17     }
    18 }
     5        function 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;
     13                        }
     14                }
     15                for(var i in ttr) {
     16                        document.getElementById(ttr[i]).style.display=bDisplay;
     17                }
     18        }
    1919</script>
    2020
    2121<form method="post" action="#ENV{action}" id="form_calcul_section">
    22     #ACTION_FORMULAIRE{#ENV{action}}
    23     <table class="hyd_formulaire">
    24         <tbody>
     22        #ACTION_FORMULAIRE{#ENV{action}}
     23        <table class="hyd_formulaire">
     24                <tbody>
    2525
    26             <!-- On génère les champs du formulaire en suivant le tableau saisies -->
    27             <INCLURE{fond=hyd_inc/formulaire_champs,env}>
     26                        <!-- On génère les champs du formulaire en suivant le tableau saisies -->
     27                        <INCLURE{fond=hyd_inc/formulaire_champs,env}>
    2828
    29             <tr>
    30                 <td colspan="4" class="hyd_bouton_submit">
    31                    <input type="submit" value="<:hydraulic:calculer:>">
    32                 </td>
    33             </tr>
     29                        <tr>
     30                                <td colspan="4" class="hyd_bouton_submit">
     31                                        <input type="submit" value="<:hydraulic:calculer:>">
     32                                </td>
     33                        </tr>
    3434
    35       </tbody>
    36    </table>
     35                </tbody>
     36        </table>
    3737</form>
    3838
    3939<script language="javascript">
    40     // Affichage des champs du type de section sélectionné uniquement
    41     sectionDisplayFieldset();
     40        // Affichage des champs du type de section sélectionné uniquement
     41        sectionDisplayFieldset();
    4242</script>
    4343[<div id="hyd_resultat">(#ENV*{message_ok})</div>]
  • _plugins_/hydraulic/trunk/formulaires/calcul_section.php

    r95855 r96562  
    3030
    3131function formulaires_calcul_section_charger_dist() {
    32     global $FCS;
    33     return $FCS->charger();
     32        global $FCS;
     33        return $FCS->charger();
    3434}
    3535
    3636
    37 function formulaires_calcul_section_verifier_dist(){
    38     global $FCS;
    39     return $FCS->verifier();
     37function formulaires_calcul_section_verifier_dist() {
     38        global $FCS;
     39        return $FCS->verifier();
    4040}
    4141
    4242
    43 function formulaires_calcul_section_traiter_dist(){
    44     global $FCS;
    45     return $FCS->traiter();
     43function formulaires_calcul_section_traiter_dist() {
     44        global $FCS;
     45        return $FCS->traiter();
    4646}
    4747?>
    48 
  • _plugins_/hydraulic/trunk/formulaires/cond_distri.html

    r96285 r96562  
    33
    44<form method="post" action="#ENV{action}#VAL{#resultat_cond_distri}" id="form_cond_distri">
    5    #ACTION_FORMULAIRE{#ENV{action}}
    6     <table class="hyd_formulaire">
    7         <tbody>
     5        #ACTION_FORMULAIRE{#ENV{action}}
     6        <table class="hyd_formulaire">
     7                <tbody>
    88
    9         <!-- On génère les champs du formulaire en suivant le tableau saisies -->
    10         <INCLURE{fond=hyd_inc/formulaire_champs,env}>
     9                        <!-- On génère les champs du formulaire en suivant le tableau saisies -->
     10                        <INCLURE{fond=hyd_inc/formulaire_champs,env}>
    1111
    12             <tr>
    13                 <td colspan="5" class="hyd_bouton_submit">
    14                    <input type="submit" value="<:hydraulic:calculer:>">
    15                 </td>
    16             </tr>
     12                        <tr>
     13                                <td colspan="5" class="hyd_bouton_submit">
     14                                        <input type="submit" value="<:hydraulic:calculer:>">
     15                                </td>
     16                        </tr>
    1717
    18         </tbody>
    19     </table>
     18                </tbody>
     19        </table>
    2020</form>
    2121
  • _plugins_/hydraulic/trunk/formulaires/cond_distri.php

    r96285 r96562  
    4444
    4545function formulaires_cond_distri_charger_dist() {
    46     global $FCD;
    47     return $FCD->charger();
     46        global $FCD;
     47        return $FCD->charger();
    4848}
    4949
    5050
    51 function formulaires_cond_distri_verifier_dist(){
    52     global $FCD;
    53     return $FCD->verifier();
     51function formulaires_cond_distri_verifier_dist() {
     52        global $FCD;
     53        return $FCD->verifier();
    5454}
    5555
    5656
    57 function formulaires_cond_distri_traiter_dist(){
    58     global $FCD;
    59     return $FCD->traiter();
     57function formulaires_cond_distri_traiter_dist() {
     58        global $FCD;
     59        return $FCD->traiter();
    6060}
    6161?>
  • _plugins_/hydraulic/trunk/formulaires/courbe_remous.html

    r95765 r96562  
    33<script language="javascript" type="text/javascript" src="#CHEMIN{js/hyd_fonctions.js}"></script>
    44<script>
    5 //Permet d'afficher ou cacher les champs correspondant à une section.
    6 function afficher_cacher() {
    7     var section = getSelectValue('choix_section_cr');
    8     // On récupère tous le formulaire
    9     var f = document.getElementById("form_courbe_remous");
    10     if(f) {
    11         // On récupère seulement les lignes <tr> du formulaire stocké dans f
    12         var champs = f.getElementsByTagName("tr");
    13         // On parcourt tous les <tr> du formulaire
    14         for(var i=0, n=champs.length; i<n; i++) {
    15             // Si le champ appartient à la section choisis , alors on l'affiche.
    16             if((champs[i].getAttribute("id") != null) &&((champs[i].getAttribute("id")).substr(0,2) == section)){
    17                 document.getElementById((champs[i].getAttribute("id"))).style.display='table-row';
    18             }
    19             // Sinon si il appartient aux autres sections, alors on le masque
    20             else if((champs[i].getAttribute("id") != null) &&((champs[i].getAttribute("id")).substr(0,1) == 'F')) {
    21                 document.getElementById((champs[i].getAttribute("id"))).style.display='none';
    22             }
    23 
    24         }
    25     }
    26 }
     5        //Permet d'afficher ou cacher les champs correspondant à une section.
     6        function afficher_cacher() {
     7                var section = getSelectValue('choix_section_cr');
     8                // On récupère tous le formulaire
     9                var f = document.getElementById("form_courbe_remous");
     10                if(f) {
     11                        // On récupère seulement les lignes <tr> du formulaire stocké dans f
     12                        var champs = f.getElementsByTagName("tr");
     13                        // On parcourt tous les <tr> du formulaire
     14                        for(var i=0, n=champs.length; i<n; i++) {
     15                                // Si le champ appartient à la section choisis , alors on l'affiche.
     16                                if((champs[i].getAttribute("id") != null) &&((champs[i].getAttribute("id")).substr(0,2) == section)){
     17                                        document.getElementById((champs[i].getAttribute("id"))).style.display='table-row';
     18                                }
     19                                // Sinon si il appartient aux autres sections, alors on le masque
     20                                else if((champs[i].getAttribute("id") != null) &&((champs[i].getAttribute("id")).substr(0,1) == 'F')) {
     21                                        document.getElementById((champs[i].getAttribute("id"))).style.display='none';
     22                                }
     23                        }
     24                }
     25        }
    2726</script>
    2827<div class="formulaire_spip form_courbe_remous">
    29 <form method="post" action="#ENV{action}#VAL{#resultat_courbe_remous}" id="form_courbe_remous">
    30    #ACTION_FORMULAIRE{#ENV{action}}
    31    <table class="hyd_formulaire">
    32       <tbody>
    33          <tr id="type_section_field_cr">
    34             <td colspan="2"><div class="hyd_formulaire_chapitre"><:hydraulic:type_section:></div></td>
    35          </tr>
     28        <form method="post" action="#ENV{action}#VAL{#resultat_courbe_remous}" id="form_courbe_remous">
     29                #ACTION_FORMULAIRE{#ENV{action}}
     30                <table class="hyd_formulaire">
     31                        <tbody>
     32                                <tr id="type_section_field_cr">
     33                                        <td colspan="2"><div class="hyd_formulaire_chapitre"><:hydraulic:type_section:></div></td>
     34                                </tr>
    3635
    37             <tr id="type_section_choix_cr">
    38                 <td align="right">
    39                     <:hydraulic:choix_section:>
    40                 </td>
     36                                <tr id="type_section_choix_cr">
     37                                        <td align="right">
     38                                                <:hydraulic:choix_section:>
     39                                        </td>
    4140
    42                 <!-- On génére les options du select, correspondant aux types de section -->
    43                 <td>
    44                     <select name="crTypeSection" id="choix_section_cr" onChange="afficher_cacher();">
    45                     <BOUCLE_selectOptions(POUR){tableau #ENV{mes_saisies}}>
    46                         #SET{test, #VALEUR|table_valeur{0}|decoupeIdSection}
    47                         <BOUCLE_choixSection(CONDITION){si #CLE|substr{0,1}|== {'F'}}>
    48                             <option value="#CLE" [(#ENV{crTypeSection}|=={#CLE}|?{'selected',''})]>#GET{test}</option>
    49                         </BOUCLE_choixSection>
    50                     </BOUCLE_selectOptions>
    51                     </select>
     41                                        <!-- On génére les options du select, correspondant aux types de section -->
     42                                        <td>
     43                                                <select name="crTypeSection" id="choix_section_cr" onChange="afficher_cacher();">
     44                                                        <BOUCLE_selectOptions(POUR){tableau #ENV{mes_saisies}}>
     45                                                                #SET{test, #VALEUR|table_valeur{0}|decoupeIdSection}
     46                                                                <BOUCLE_choixSection(CONDITION){si #CLE|substr{0,1}|== {'F'}}>
     47                                                                        <option value="#CLE" [(#ENV{crTypeSection}|=={#CLE}|?{'selected',''})]>#GET{test}</option>
     48                                                                </BOUCLE_choixSection>
     49                                                        </BOUCLE_selectOptions>
     50                                                </select>
    5251
    53                     [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    54                 </td>
     52                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
     53                                        </td>
    5554
    56             </tr>
     55                                </tr>
    5756
    58             <BOUCLE_fieldChamps(POUR){tableau #ENV{mes_saisies}}>
     57                                <BOUCLE_fieldChamps(POUR){tableau #ENV{mes_saisies}}>
    5958
    60                  #SET{id_fieldset, #CLE}
     59                                        #SET{id_fieldset, #CLE}
    6160
    62                 <!-- Fieldset des champs-->
    63                  <tr id="#GET{id_fieldset}_field" style="display:[(#CLE|match{^([(#ENV{crTypeSection})]|c_bief|Cond_lim|Param_calc)$}|?{'table-row','none'})];">
    64                      <td colspan="2"><div class="hyd_formulaire_chapitre">[(#VALEUR|table_valeur{0}|traduction_hydraulic)]</div></td>
    65                 </tr>
     61                                        <!-- Fieldset des champs-->
     62                                        <tr id="#GET{id_fieldset}_field" style="display:[(#CLE|match{^([(#ENV{crTypeSection})]|c_bief|Cond_lim|Param_calc)$}|?{'table-row','none'})];">
     63                                                <td colspan="2"><div class="hyd_formulaire_chapitre">[(#VALEUR|table_valeur{0}|traduction_hydraulic)]</div></td>
     64                                        </tr>
    6665
    67                 <BOUCLE_champsLib(POUR){tableau (#VALEUR|table_valeur{1})}>
     66                                        <BOUCLE_champsLib(POUR){tableau (#VALEUR|table_valeur{1})}>
    6867
    69                     <!-- Tous les champs d'un seul fieldset -->
    70                     <tr id="#GET{id_fieldset}_[(#CLE)]" style="display:[(#GET{id_fieldset}|match{^([(#ENV{crTypeSection})]|c_bief|Cond_lim|Param_calc)$}|?{'table-row','none'})];" [(#ENV**{erreurs}|table_valeur{#GET{id_fieldset}_[(#CLE)]}|oui) class="hyd_erreur"]>
    71                         <td align="right" width="65%">
    72                             [(#VALEUR|table_valeur{0}|traduction_hydraulic)]
    73                         </td>
     68                                                <!-- Tous les champs d'un seul fieldset -->
     69                                                <tr id="#GET{id_fieldset}_[(#CLE)]" style="display:[(#GET{id_fieldset}|match{^([(#ENV{crTypeSection})]|c_bief|Cond_lim|Param_calc)$}|?{'table-row','none'})];" [(#ENV**{erreurs}|table_valeur{#GET{id_fieldset}_[(#CLE)]}|oui) class="hyd_erreur"]>
     70                                                        <td align="right" width="65%">
     71                                                                [(#VALEUR|table_valeur{0}|traduction_hydraulic)]
     72                                                        </td>
    7473
    75                         <td width="35%" >
    76                            [<span class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#GET{id_fieldset}_[(#CLE)]})</span>]
    77                            <input type="text" value="[(#ENV{#GET{id_fieldset}_[(#CLE)]})]" maxlength="30" name="#GET{id_fieldset}_[(#CLE)]">
    78                         </td>
     74                                                        <td width="35%" >
     75                                                                [<span class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#GET{id_fieldset}_[(#CLE)]})</span>]
     76                                                                <input type="text" value="[(#ENV{#GET{id_fieldset}_[(#CLE)]})]" maxlength="30" name="#GET{id_fieldset}_[(#CLE)]">
     77                                                        </td>
    7978
    80                     </tr>
     79                                                </tr>
    8180
    82                 </BOUCLE_champsLib>
     81                                        </BOUCLE_champsLib>
    8382
    84             </BOUCLE_fieldChamps>
    85             <tr>
    86                 <td align="right">
    87                     <:hydraulic:choix_resolution:>
    88                 </td>
     83                                </BOUCLE_fieldChamps>
     84                                <tr>
     85                                        <td align="right">
     86                                                <:hydraulic:choix_resolution:>
     87                                        </td>
    8988
    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>
     89                                        <!-- On génére les options du select, correspondant aux types de section -->
     90                                        <td>
     91                                                [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{choix_resolution})</div>]
     92                                                <select name="choix_resolution" id="choix_resolution">
     93                                                        <option value="RK4" [(#ENV{choix_resolution}|=={RK4}|?{'selected',''})]>
     94                                                                <:hydraulic:runge_kutta:>
     95                                                        </option>
     96                                                        <option value="Euler" [(#ENV{choix_resolution}|=={Euler}|?{'selected',''})]>
     97                                                                <:hydraulic:euler_explicite:>
     98                                                        </option>
     99                                                </select>
     100                                        </td>
     101                                </tr>
    103102
    104          <tr>
    105             <td colspan="2" class="hyd_bouton_submit">
    106                <input type="submit" value="<:hydraulic:calculer_remous:>">
    107             </td>
    108          </tr>
     103                                <tr>
     104                                        <td colspan="2" class="hyd_bouton_submit">
     105                                                <input type="submit" value="<:hydraulic:calculer_remous:>">
     106                                        </td>
     107                                </tr>
    109108
    110       </tbody>
    111    </table>
    112 </form>
     109                        </tbody>
     110                </table>
     111        </form>
    113112</div>
    114113[<div id="hyd_resultat">(#ENV*{message_ok})</div>]
  • _plugins_/hydraulic/trunk/formulaires/courbe_remous.php

    r95855 r96562  
    3030function mes_saisies() {
    3131
    32     // On récupère les champs communs à tous les formulaires à savoir les champs de section.
    33     include_spip('hyd_inc/section');
    34     $fieldset_champs = mes_saisies_section(true);
    35 
    36     $fieldset_champs['Cond_lim']    = array(
    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     );
    44 
    45     $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     return $fieldset_champs;
     32        // On récupère les champs communs à tous les formulaires à savoir les champs de section.
     33        include_spip('hyd_inc/section');
     34        $fieldset_champs = mes_saisies_section(true);
     35
     36        $fieldset_champs['Cond_lim']    = array(
     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        );
     44
     45        $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        return $fieldset_champs;
    5353}
    5454
     
    5757function getChamps() {
    5858
    59     $tSaisie = mes_saisies();
    60     $sTypeSection = _request('crTypeSection');
    61     $tData = array();
    62 
    63     foreach($tSaisie as $IdFS=>$FieldSet) {
    64         // Si ce n'est pas une section ou la section définie...
    65         if((substr($IdFS,0,1) != 'F') || ($IdFS == $sTypeSection)){
    66             // ... alors on parcourt notre deuxième tableau en ajoutant les champs nécessaires.
    67             foreach($FieldSet[1] as $Cle=>$Champ) {
    68                 $tData[$IdFS.'_'.$Cle] = _request($IdFS.'_'.$Cle); // Valeur dans le formulaire
    69                 $tCtrl[$IdFS.'_'.$Cle] = $Champ[2]; // Codes de vérification
    70             }
    71         }
    72     }
    73     return array($tData,$tCtrl);
     59        $tSaisie = mes_saisies();
     60        $sTypeSection = _request('crTypeSection');
     61        $tData = array();
     62
     63        foreach($tSaisie as $IdFS=>$FieldSet) {
     64                // Si ce n'est pas une section ou la section définie...
     65                if((substr($IdFS,0,1) != 'F') || ($IdFS == $sTypeSection)){
     66                        // ... alors on parcourt notre deuxième tableau en ajoutant les champs nécessaires.
     67                        foreach($FieldSet[1] as $Cle=>$Champ) {
     68                                $tData[$IdFS.'_'.$Cle] = _request($IdFS.'_'.$Cle); // Valeur dans le formulaire
     69                                $tCtrl[$IdFS.'_'.$Cle] = $Champ[2]; // Codes de vérification
     70                        }
     71                }
     72        }
     73        return array($tData,$tCtrl);
    7474}
    7575
    7676
    7777function formulaires_courbe_remous_charger_dist() {
    78     // On charge les saisies et les champs qui nécessitent un accès par les fonctions
    79     $tSaisie_section = mes_saisies();
    80     $valeurs = array(
    81         'crTypeSection' => 'FT',
    82         'mes_saisies' => $tSaisie_section
    83     );
    84 
    85     // On charge tous les champs avec leur valeur
    86     foreach($tSaisie_section as $CleFD=>$FieldSet) {
    87         foreach($FieldSet[1] as $Cle=>$Champ) {
    88             $valeurs[$CleFD.'_'.$Cle] = $Champ[1];
    89         }
    90     }
     78        // On charge les saisies et les champs qui nécessitent un accès par les fonctions
     79        $tSaisie_section = mes_saisies();
     80        $valeurs = array(
     81                'crTypeSection' => 'FT',
     82                'mes_saisies' => $tSaisie_section
     83        );
     84
     85        // On charge tous les champs avec leur valeur
     86        foreach($tSaisie_section as $CleFD=>$FieldSet) {
     87                foreach($FieldSet[1] as $Cle=>$Champ) {
     88                        $valeurs[$CleFD.'_'.$Cle] = $Champ[1];
     89                }
     90        }
    9191    $valeurs['choix_resolution'] = _request('choix_resolution');
    9292
    93     return $valeurs;
    94 }
    95 
    96 function formulaires_courbe_remous_verifier_dist(){
    97     $erreurs = array();
    98     list($tData,$tCtrl) = getChamps();
    99     include_spip('hyd_inc/formulaire');
    100     return hyd_formulaires_verifier($tData,$tCtrl);
    101 }
    102 
    103 function formulaires_courbe_remous_traiter_dist(){
    104     global $spip_lang;
    105     include_spip('hyd_inc/section.class');
    106     include_spip('hyd_inc/cache');
    107     include_spip('hyd_inc/log.class');
    108     include_spip('hyd_inc/courbe_remous');
    109     include_spip('hyd_inc/graph.class');
    110 
    111     $datas = array();
    112     $echo = '';
    113     $tSaisie = mes_saisies();
    114     $tChUtil = array();
    115     $crTypeSection = _request('crTypeSection');
    116 
    117     // On récupère tous les champs utiles, à savoir les champs fixes, et les champs appartenant à la section choisie
    118     foreach($tSaisie as $IdFS=>$FieldSet) {
    119         if((substr($IdFS,0,1) != 'F') || ($IdFS == $crTypeSection)){
    120             foreach($FieldSet[1] as $Cle=>$Champ) {
    121                 $tChUtil[] = $IdFS.'_'.$Cle;
    122             }
    123         }
    124     }
    125 
    126     //On récupère tous les champs utiles dans le tableau datas
    127     foreach($tChUtil as $champ) {
    128         if (_request($champ)){
    129             $datas[$champ] = _request($champ);
    130         }
    131 
    132         $datas[$champ] = str_replace(',','.',$datas[$champ]); // Bug #574
    133     }
    134 
    135     // On ajoute la langue en cours pour différencier le fichier de cache par langue
    136     $datas['sLang'] = $spip_lang;
    137 
    138     // Nom du fichier en cache pour calcul déjà fait
    139     $CacheFileName=md5(serialize($datas));
    140 
    141     // Initialisation de la classe chargée d'afficher le journal de calcul
    142     $oLog = new cLog();
    143 
    144     //Transformation des variables contenues dans $datas
    145     foreach($datas as $champ=>$data) {
    146         ${$champ}=$data;
    147     }
    148 
    149     // Contrôle du nombre de pas d'espace maximum
    150     $iPasMax = 1000;
    151     if($c_bief_rLong / $Param_calc_rDx > $iPasMax) {
    152         $Param_calc_rDx = $c_bief_rLong / $iPasMax;
    153         $oLog->Add(_T('hydraulic:pas_nombre').' > '.$iPasMax.' => '._T('hydraulic:pas_ajustement').$Param_calc_rDx.' m');
    154     }
    155     //spip_log(array($Cond_lim_rYaval,$c_bief_rKs,$Cond_lim_rQ,$c_bief_rLong,$c_bief_rIf,$Param_calc_rDx,$Param_calc_rPrec),'hydraulic');
    156 
    157     // 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_rYB,$Cond_lim_rYaval,$Param_calc_rDx,$c_bief_rLong,_request('choix_resolution'));
    159 
    160     // Création d'un objet de type Section selon la section choisie.
    161     switch($crTypeSection) {
    162         case 'FT':
    163             include_spip('hyd_inc/sectionTrapez.class');
    164             $oSection=new cSnTrapez($oLog,$oParam,$FT_rLargeurFond,$FT_rFruit);
    165             break;
    166 
    167         case 'FR':
    168             include_spip('hyd_inc/sectionRectang.class');
    169             $oSection=new cSnRectang($oLog,$oParam,$FR_rLargeurFond);
    170             break;
    171 
    172         case 'FC':
    173             include_spip('hyd_inc/sectionCirc.class');
    174             $oSection=new cSnCirc($oLog,$oParam,$FC_rD);
    175             break;
    176 
    177         case 'FP':
    178             include_spip('hyd_inc/sectionPuiss.class');
    179             $oSection=new cSnPuiss($oLog,$oParam,$FP_rCoef,$FP_rLargeurBerge);
    180             break;
    181 
    182         default:
    183             include_spip('hyd_inc/sectionTrapez.class');
    184             $oSection=new cSnTrapeze($oLog,$oParam,$FT_rLargeurFond,$FT_rFruit);
    185     }
    186 
    187     /***************************************************************************
    188     *                        Calcul de la ligne d'eau
    189     ****************************************************************************/
    190     $bNoCache = true; // true pour débugage
    191     if(!$bNoCache && is_file(HYD_CACHE_DIRECTORY.$CacheFileName)) {
    192         // On récupère toutes les données dans un cache déjà créé
    193         list($tr,$sLog,$oSection->rHautCritique,$oSection->rHautNormale) = ReadCacheFile($CacheFileName);
    194     }
    195     else {
    196         // On calcule les données pour créer un cache et afficher le résultat
    197         $oLog->Add(_T('hydraulic:largeur_berge').' = '.format_nombre($oSection->rLargeurBerge,$oParam->iPrec).' m');
    198         $oLog->Add(_T('hydraulic:h_critique').' = '.format_nombre($oSection->CalcGeo('Yc'),$oParam->iPrec).' m');
    199         $oLog->Add(_T('hydraulic:h_normale').' = '.format_nombre($oSection->CalcGeo('Yn'),$oParam->iPrec).' m');
    200 
    201         // Calcul depuis l'aval
    202         if($oSection->rHautCritique <= $Cond_lim_rYaval) {
    203             $oLog->Add(_T('hydraulic:calcul_fluvial'));
    204             list($tr['X1'],$tr['Y1']) = calcul_courbe_remous($oParam,$oSection,$oLog,$oParam->iPrec);
    205         }
    206         else {
    207             $oLog->Add(_T('hydraulic:pas_calcul_depuis_aval'));
    208         }
    209 
    210         // Calcul depuis l'amont
    211         if($oSection->rHautCritique >= $Cond_lim_rYamont) {
    212             $oLog->Add(_T('hydraulic:calcul_torrentiel'));
    213             $oParam->rYCL = $Cond_lim_rYamont; // Condition limite amont
    214             $oParam->rDx = -$oParam->rDx; // un pas négatif force le calcul à partir de l'amont
    215             list($tr['X2'],$tr['Y2']) = calcul_courbe_remous($oParam,$oSection,$oLog,$oParam->iPrec);
    216         }
    217         else {
    218             $oLog->Add(_T('hydraulic:pas_calcul_depuis_amont'));
    219         }
    220 
    221         //Production du journal de calcul
    222         $sLog = $oLog->Result();
    223         //Enregistrement des données dans fichier cache
    224         WriteCacheFile($CacheFileName,array($tr,$sLog,$oSection->rHautCritique,$oSection->rHautNormale));
    225     }
    226     //Construction d'un tableau des indices x combinant les abscisses des 2 lignes d'eau
    227     $trX = array();
    228     if(isset($tr['X1'])) $trX = array_merge($trX, $tr['X1']);
    229     if(isset($tr['X2'])) $trX = array_merge($trX, $tr['X2']);
    230     $trX = array_unique($trX, SORT_NUMERIC);
    231     sort($trX, SORT_NUMERIC);
    232     //~ spip_log($tr,'hydraulic'); // Debug
    233 
    234 
    235     /***************************************************************************
    236     *                        Affichage du graphique
    237     ****************************************************************************/
    238     $oGraph = new cGraph();
    239     // Cote des berges
    240     $oGraph->AddSerie(
    241         'berge',
    242         $trX,
    243         $oParam->rYB,  // La cote des berges sera calculée à partir de la pente fournie dans GetGraph
    244         '#C58f50',
    245         'lineWidth:1');
    246     // Cote du fond
    247     $oGraph->AddSerie(
    248         'fond',
    249         $trX,
    250         0,  // La cote du fond sera calculée à partir de la pente fournie dans GetGraph
    251         '#753f00',
    252         'lineWidth:1, fill:true');
    253    // Ligne d'eau fluviale
    254     if(isset($tr['Y1'])) {
    255         $oGraph->AddSerie(
    256             'ligne_eau_fluviale',
    257             $tr['X1'],
    258             $tr['Y1'],
    259             '#0093bd',
    260             'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}');
    261     }
    262     // Ligne d'eau torrentielle
    263     if(isset($tr['Y2'])) {
    264         $oGraph->AddSerie(
    265             'ligne_eau_torrentielle',
    266             $tr['X2'],
    267             $tr['Y2'],
    268             '#77a3cd',
    269             'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}');
    270     }
    271     // Hauteur critique
    272     if(is_numeric($oSection->rHautCritique)) {
    273         $oGraph->AddSerie(
    274             'h_critique',
    275             $trX,
    276             $oSection->rHautCritique,  // La cote du fond sera calculée à partir de la pente fournie dans GetGraph
    277             '#ff0000',
    278             'lineWidth:2');
    279     }
    280     // Hauteur normale
    281     if(is_numeric($oSection->rHautNormale)) {
    282         $oGraph->AddSerie(
    283             'h_normale',
    284             $trX,
    285             $oSection->rHautNormale,  // La cote du fond sera calculée à partir de la pente fournie dans GetGraph
    286             '#a4c537',
    287             'lineWidth:2');
    288     }
    289 
    290     // Décalage des données par rapport au fond
    291     $oGraph->Decal(0, $c_bief_rIf, $c_bief_rLong);
    292 
    293     // Récupération du graphique
    294     $echo .= $oGraph->GetGraph('graphique',400,600);
    295 
    296 
    297     $echo .= $sLog;
    298 
    299     /***************************************************************************
    300     *                   Affichage du tableau de données
    301     ****************************************************************************/
    302     $echo.='<table class="spip">
    303         <thead>
    304             <tr class="row_first">
    305                 <th scope="col" colspan="1" rowspan="2">'._T('hydraulic:abscisse').' (m)</th>
    306                 <th scope="col" colspan="2" rowspan="1">'._T('hydraulic:ligne_eau_fluviale').'</th>
    307                 <th scope="col" colspan="2" rowspan="1">'._T('hydraulic:ligne_eau_torrentielle').'</th>
    308             </tr>
    309             <tr class="row_first">
    310                 <th scope="col">'._T('hydraulic:tirant_eau').'</th>
    311                 <th scope="col">Froude</th>
    312                 <th scope="col">'._T('hydraulic:tirant_eau').'</th>
    313                 <th scope="col">Froude</th>
    314             </tr>
    315         </thead>
    316         <tbody>';
    317     $i=0;
    318     foreach($trX as $rX) {
    319         $i+=1;
    320         $echo.='<tr class="align_right ';
    321         $echo.=($i%2==0)?'row_even':'row_odd';
    322         $echo.='"><td>'.format_nombre($rX,$oParam->iPrec).'</td>';
    323         if(isset($tr['X1']) && !(($cle = array_search($rX,$tr['X1'])) === false)) {
    324             // On formalise les résultats, avec le nombre de chiffres aprés la virgule adéquat
    325             $echo .= '<td>'.format_nombre($tr['Y1'][$cle],$oParam->iPrec).'</td>';
    326             $echo .= '<td>'.format_nombre($oSection->Calc('Fr', $tr['Y1'][$cle]),$oParam->iPrec).'</td>';
    327         }
    328         else {
    329             $echo .= '<td></td><td></td>';
    330         }
    331         if(isset($tr['X2']) && !(($cle = array_search($rX,$tr['X2'])) === false)) {
    332             $echo .= '<td>'.format_nombre($tr['Y2'][$cle],$oParam->iPrec).'</td>';
    333             $echo .= '<td>'.format_nombre($oSection->Calc('Fr', $tr['Y2'][$cle]),$oParam->iPrec).'</td>';
    334         }
    335         else {
    336             $echo .= '<td></td><td></td>';
    337         }
    338         $echo .= '</tr>';
    339     }
    340     $echo.='</tbody>
    341         </table>';
    342 
    343     $res['message_ok'] = $echo;
    344 
    345     return $res;
     93        return $valeurs;
     94}
     95
     96function formulaires_courbe_remous_verifier_dist() {
     97        $erreurs = array();
     98        list($tData,$tCtrl) = getChamps();
     99        include_spip('hyd_inc/formulaire');
     100        return hyd_formulaires_verifier($tData,$tCtrl);
     101}
     102
     103function formulaires_courbe_remous_traiter_dist() {
     104        global $spip_lang;
     105        include_spip('hyd_inc/section.class');
     106        include_spip('hyd_inc/cache');
     107        include_spip('hyd_inc/log.class');
     108        include_spip('hyd_inc/courbe_remous');
     109        include_spip('hyd_inc/graph.class');
     110
     111        $datas = array();
     112        $echo = '';
     113        $tSaisie = mes_saisies();
     114        $tChUtil = array();
     115        $crTypeSection = _request('crTypeSection');
     116
     117        // On récupère tous les champs utiles, à savoir les champs fixes, et les champs appartenant à la section choisie
     118        foreach($tSaisie as $IdFS=>$FieldSet) {
     119                if((substr($IdFS,0,1) != 'F') || ($IdFS == $crTypeSection)){
     120                        foreach($FieldSet[1] as $Cle=>$Champ) {
     121                                $tChUtil[] = $IdFS.'_'.$Cle;
     122                        }
     123                }
     124        }
     125
     126        //On récupère tous les champs utiles dans le tableau datas
     127        foreach($tChUtil as $champ) {
     128                if (_request($champ)){
     129                        $datas[$champ] = _request($champ);
     130                }
     131
     132                $datas[$champ] = str_replace(',','.',$datas[$champ]); // Bug #574
     133        }
     134
     135        // On ajoute la langue en cours pour différencier le fichier de cache par langue
     136        $datas['sLang'] = $spip_lang;
     137
     138        // Nom du fichier en cache pour calcul déjà fait
     139        $CacheFileName=md5(serialize($datas));
     140
     141        // Initialisation de la classe chargée d'afficher le journal de calcul
     142        $oLog = new cLog();
     143
     144        //Transformation des variables contenues dans $datas
     145        foreach($datas as $champ=>$data) {
     146                ${$champ}=$data;
     147        }
     148
     149        // Contrôle du nombre de pas d'espace maximum
     150        $iPasMax = 1000;
     151        if($c_bief_rLong / $Param_calc_rDx > $iPasMax) {
     152                $Param_calc_rDx = $c_bief_rLong / $iPasMax;
     153                $oLog->Add(_T('hydraulic:pas_nombre').' > '.$iPasMax.' => '._T('hydraulic:pas_ajustement').$Param_calc_rDx.' m');
     154        }
     155        //spip_log(array($Cond_lim_rYaval,$c_bief_rKs,$Cond_lim_rQ,$c_bief_rLong,$c_bief_rIf,$Param_calc_rDx,$Param_calc_rPrec),'hydraulic');
     156
     157        // 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_rYB,$Cond_lim_rYaval,$Param_calc_rDx,$c_bief_rLong,_request('choix_resolution'));
     159
     160        // Création d'un objet de type Section selon la section choisie.
     161        switch($crTypeSection) {
     162                case 'FT':
     163                include_spip('hyd_inc/sectionTrapez.class');
     164                $oSection=new cSnTrapez($oLog,$oParam,$FT_rLargeurFond,$FT_rFruit);
     165                break;
     166
     167                case 'FR':
     168                include_spip('hyd_inc/sectionRectang.class');
     169                $oSection=new cSnRectang($oLog,$oParam,$FR_rLargeurFond);
     170                break;
     171
     172                case 'FC':
     173                include_spip('hyd_inc/sectionCirc.class');
     174                $oSection=new cSnCirc($oLog,$oParam,$FC_rD);
     175                break;
     176
     177                case 'FP':
     178                include_spip('hyd_inc/sectionPuiss.class');
     179                $oSection=new cSnPuiss($oLog,$oParam,$FP_rCoef,$FP_rLargeurBerge);
     180                break;
     181
     182                default:
     183                include_spip('hyd_inc/sectionTrapez.class');
     184                $oSection=new cSnTrapeze($oLog,$oParam,$FT_rLargeurFond,$FT_rFruit);
     185        }
     186
     187        /***************************************************************************
     188        *                        Calcul de la ligne d'eau
     189        ****************************************************************************/
     190        $bNoCache = true; // true pour débugage
     191        if(!$bNoCache && is_file(HYD_CACHE_DIRECTORY.$CacheFileName)) {
     192                // On récupère toutes les données dans un cache déjà créé
     193                list($tr,$sLog,$oSection->rHautCritique,$oSection->rHautNormale) = ReadCacheFile($CacheFileName);
     194        }
     195        else {
     196                // On calcule les données pour créer un cache et afficher le résultat
     197                $oLog->Add(_T('hydraulic:largeur_berge').' = '.format_nombre($oSection->rLargeurBerge,$oParam->iPrec).' m');
     198                $oLog->Add(_T('hydraulic:h_critique').' = '.format_nombre($oSection->CalcGeo('Yc'),$oParam->iPrec).' m');
     199                $oLog->Add(_T('hydraulic:h_normale').' = '.format_nombre($oSection->CalcGeo('Yn'),$oParam->iPrec).' m');
     200
     201                // Calcul depuis l'aval
     202                if($oSection->rHautCritique <= $Cond_lim_rYaval) {
     203                        $oLog->Add(_T('hydraulic:calcul_fluvial'));
     204                        list($tr['X1'],$tr['Y1']) = calcul_courbe_remous($oParam,$oSection,$oLog,$oParam->iPrec);
     205                }
     206                else {
     207                        $oLog->Add(_T('hydraulic:pas_calcul_depuis_aval'));
     208                }
     209
     210                // Calcul depuis l'amont
     211                if($oSection->rHautCritique >= $Cond_lim_rYamont) {
     212                        $oLog->Add(_T('hydraulic:calcul_torrentiel'));
     213                        $oParam->rYCL = $Cond_lim_rYamont; // Condition limite amont
     214                        $oParam->rDx = -$oParam->rDx; // un pas négatif force le calcul à partir de l'amont
     215                        list($tr['X2'],$tr['Y2']) = calcul_courbe_remous($oParam,$oSection,$oLog,$oParam->iPrec);
     216                }
     217                else {
     218                        $oLog->Add(_T('hydraulic:pas_calcul_depuis_amont'));
     219                }
     220
     221                //Production du journal de calcul
     222                $sLog = $oLog->Result();
     223                //Enregistrement des données dans fichier cache
     224                WriteCacheFile($CacheFileName,array($tr,$sLog,$oSection->rHautCritique,$oSection->rHautNormale));
     225        }
     226        //Construction d'un tableau des indices x combinant les abscisses des 2 lignes d'eau
     227        $trX = array();
     228        if(isset($tr['X1'])) $trX = array_merge($trX, $tr['X1']);
     229        if(isset($tr['X2'])) $trX = array_merge($trX, $tr['X2']);
     230        $trX = array_unique($trX, SORT_NUMERIC);
     231        sort($trX, SORT_NUMERIC);
     232        //~ spip_log($tr,'hydraulic'); // Debug
     233
     234
     235        /***************************************************************************
     236        *                        Affichage du graphique
     237        ****************************************************************************/
     238        $oGraph = new cGraph();
     239        // Cote des berges
     240        $oGraph->AddSerie(
     241                'berge',
     242                $trX,
     243                $oParam->rYB,  // La cote des berges sera calculée à partir de la pente fournie dans GetGraph
     244                '#C58f50',
     245                'lineWidth:1'
     246        );
     247        // Cote du fond
     248        $oGraph->AddSerie(
     249                'fond',
     250                $trX,
     251                0,  // La cote du fond sera calculée à partir de la pente fournie dans GetGraph
     252                '#753f00',
     253                'lineWidth:1, fill:true'
     254        );
     255        // Ligne d'eau fluviale
     256        if(isset($tr['Y1'])) {
     257                $oGraph->AddSerie(
     258                        'ligne_eau_fluviale',
     259                        $tr['X1'],
     260                        $tr['Y1'],
     261                        '#0093bd',
     262                        'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}'
     263                );
     264        }
     265        // Ligne d'eau torrentielle
     266        if(isset($tr['Y2'])) {
     267                $oGraph->AddSerie(
     268                        'ligne_eau_torrentielle',
     269                        $tr['X2'],
     270                        $tr['Y2'],
     271                        '#77a3cd',
     272                        'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}'
     273                );
     274        }
     275        // Hauteur critique
     276        if(is_numeric($oSection->rHautCritique)) {
     277                $oGraph->AddSerie(
     278                        'h_critique',
     279                        $trX,
     280                        $oSection->rHautCritique,  // La cote du fond sera calculée à partir de la pente fournie dans GetGraph
     281                        '#ff0000',
     282                        'lineWidth:2'
     283                );
     284        }
     285        // Hauteur normale
     286        if(is_numeric($oSection->rHautNormale)) {
     287                $oGraph->AddSerie(
     288                        'h_normale',
     289                        $trX,
     290                        $oSection->rHautNormale,  // La cote du fond sera calculée à partir de la pente fournie dans GetGraph
     291                        '#a4c537',
     292                        'lineWidth:2'
     293                );
     294        }
     295
     296        // Décalage des données par rapport au fond
     297        $oGraph->Decal(0, $c_bief_rIf, $c_bief_rLong);
     298
     299        // Récupération du graphique
     300        $echo .= $oGraph->GetGraph('graphique',400,600);
     301
     302
     303        $echo .= $sLog;
     304
     305        /***************************************************************************
     306        *                   Affichage du tableau de données
     307        ****************************************************************************/
     308        $echo.='<table class="spip">
     309                <thead>
     310                        <tr class="row_first">
     311                                <th scope="col" colspan="1" rowspan="2">'._T('hydraulic:abscisse').' (m)</th>
     312                                <th scope="col" colspan="2" rowspan="1">'._T('hydraulic:ligne_eau_fluviale').'</th>
     313                                <th scope="col" colspan="2" rowspan="1">'._T('hydraulic:ligne_eau_torrentielle').'</th>
     314                        </tr>
     315                        <tr class="row_first">
     316                                <th scope="col">'._T('hydraulic:tirant_eau').'</th>
     317                                <th scope="col">Froude</th>
     318                                <th scope="col">'._T('hydraulic:tirant_eau').'</th>
     319                                <th scope="col">Froude</th>
     320                        </tr>
     321                </thead>
     322                <tbody>';
     323                        $i=0;
     324                        foreach($trX as $rX) {
     325                                $i+=1;
     326                                $echo.='<tr class="align_right ';
     327                                        $echo.=($i%2==0)?'row_even':'row_odd';
     328                                        $echo.='"><td>'.format_nombre($rX,$oParam->iPrec).'</td>';
     329                                        if(isset($tr['X1']) && !(($cle = array_search($rX,$tr['X1'])) === false)) {
     330                                                // On formalise les résultats, avec le nombre de chiffres aprés la virgule adéquat
     331                                                $echo .= '<td>'.format_nombre($tr['Y1'][$cle],$oParam->iPrec).'</td>';
     332                                                $echo .= '<td>'.format_nombre($oSection->Calc('Fr', $tr['Y1'][$cle]),$oParam->iPrec).'</td>';
     333                                        }
     334                                        else {
     335                                                $echo .= '<td></td><td></td>';
     336                                        }
     337                                        if(isset($tr['X2']) && !(($cle = array_search($rX,$tr['X2'])) === false)) {
     338                                                $echo .= '<td>'.format_nombre($tr['Y2'][$cle],$oParam->iPrec).'</td>';
     339                                                $echo .= '<td>'.format_nombre($oSection->Calc('Fr', $tr['Y2'][$cle]),$oParam->iPrec).'</td>';
     340                                        }
     341                                        else {
     342                                                $echo .= '<td></td><td></td>';
     343                                        }
     344                                $echo .= '</tr>';
     345                        }
     346                $echo.='</tbody>
     347        </table>';
     348
     349        $res['message_ok'] = $echo;
     350
     351        return $res;
    346352}
    347353?>
  • _plugins_/hydraulic/trunk/formulaires/lechapt_calmon.html

    r95765 r96562  
    33
    44<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>
     5        #ACTION_FORMULAIRE{#ENV{action}}
     6        <table class="hyd_formulaire">
     7                <tbody>
    88
    9         <!-- On génère les champs du formulaire en suivant le tableau saisies -->
    10         <INCLURE{fond=hyd_inc/formulaire_champs,env}>
     9                        <!-- On génère les champs du formulaire en suivant le tableau saisies -->
     10                        <INCLURE{fond=hyd_inc/formulaire_champs,env}>
    1111
    12             <tr>
    13                 <td colspan="5" class="hyd_bouton_submit">
    14                    <input type="submit" value="<:hydraulic:calculer_lechapt_calmon:>">
    15                 </td>
    16             </tr>
     12                        <tr>
     13                                <td colspan="5" class="hyd_bouton_submit">
     14                                        <input type="submit" value="<:hydraulic:calculer_lechapt_calmon:>">
     15                                </td>
     16                        </tr>
    1717
    18         </tbody>
    19     </table>
     18                </tbody>
     19        </table>
    2020</form>
    2121
  • _plugins_/hydraulic/trunk/formulaires/lechapt_calmon.php

    r95765 r96562  
    4444
    4545function formulaires_lechapt_calmon_charger_dist() {
    46     global $FLC;
    47     return $FLC->charger();
     46        global $FLC;
     47        return $FLC->charger();
    4848}
    4949
    5050
    51 function formulaires_lechapt_calmon_verifier_dist(){
    52     global $FLC;
    53     return $FLC->verifier();
     51function formulaires_lechapt_calmon_verifier_dist() {
     52        global $FLC;
     53        return $FLC->verifier();
    5454}
    5555
    5656
    57 function formulaires_lechapt_calmon_traiter_dist(){
    58     global $FLC;
    59     return $FLC->traiter();
     57function formulaires_lechapt_calmon_traiter_dist() {
     58        global $FLC;
     59        return $FLC->traiter();
    6060}
    6161?>
  • _plugins_/hydraulic/trunk/hyd_inc/affiche_resultats.php

    r95765 r96562  
    77 */
    88function GetResultTable($tContent,$tEntetes=false) {
    9     // On génère les entêtes du tableau de résulats
    10     $echo='<table class="spip">';
     9        // On génère les entêtes du tableau de résulats
     10        $echo='<table class="spip">';
    1111
    12     if($tEntetes) {
    13         $echo.='<thead>
    14             <tr class="row_first">';
    15         foreach($tEntetes as $s){
    16             $echo.= '<th scope="col" rowspan="2">'.$s.'</th>';
    17         }
    18         $echo.= '</tr>
    19             </thead>';
    20     }
    21     $echo.='<tbody>';
    22     $i=0;
    23     foreach($tContent as $Ligne){
    24         $i++;
    25         $echo.= '<tr class="align_right ';
    26         $echo.=($i%2==0)?'row_even':'row_odd';
    27         $echo.='">';
    28         foreach($Ligne as $Cellule){
    29             $echo.= '<td>'.$Cellule.'</td>';
    30         }
    31         $echo.= '</tr>';
    32     }
    33     $echo.= '</tbody>
    34         </table>';
    35     return $echo;
     12                if($tEntetes) {
     13                        $echo.='<thead>
     14                                <tr class="row_first">';
     15                                        foreach($tEntetes as $s){
     16                                                $echo.= '<th scope="col" rowspan="2">'.$s.'</th>';
     17                                        }
     18                                $echo.= '</tr>
     19                        </thead>';
     20                }
     21                $echo.='<tbody>';
     22                        $i=0;
     23                        foreach($tContent as $Ligne){
     24                                $i++;
     25                                $echo.= '<tr class="align_right ';
     26                                        $echo.=($i%2==0)?'row_even':'row_odd';
     27                                        $echo.='">';
     28                                        foreach($Ligne as $Cellule){
     29                                                $echo.= '<td>'.$Cellule.'</td>';
     30                                        }
     31                                $echo.= '</tr>';
     32                        }
     33                $echo.= '</tbody>
     34        </table>';
     35        return $echo;
    3636}
    3737
     
    4949 */
    5050function AfficheResultats($datas, $tAbs, $tRes, $tFlag=false) {
    51     $echo = '';
    52     $tLib = $datas['tLib'];
    53     if(!isset($datas['ValVar'])) {
    54         $datas['ValVar']='';
    55     }
    56     // Affichage des paramètres fixes
    57     $tCnt = array();
    58     foreach($tLib as $k=>$s) {
    59         if(!in_array($k,array($datas['ValCal'],$datas['ValVar']))) {
    60             $tCnt[]=array($s,format_nombre($datas[$k], $datas['iPrec']));
    61         }
    62         $tEnt = array(_T('hydraulic:param_fixes'),_T('hydraulic:valeurs'));
    63     }
    64     // Si il n'y a pas de valeur à varier on ajoute le résultat et le flag de calcul s'il existe
    65     if(!$datas['ValVar']) {
    66         $tCnt[]=array('<b>'.$tLib[$datas['ValCal']].'</b>','<b>'.format_nombre($tRes[0], $datas['iPrec']).'</b>');
    67         if($tFlag) {
    68             spip_log($tFlag,'hydraulic.'._LOG_DEBUG);
    69             $tCnt[]= array(_T('hydraulic:type_ecoulement'),_T('hydraulic:flag_'.$tFlag[0]));
    70         }
    71     }
    72     $tableau_fixe = GetResultTable($tCnt,$tEnt);
     51        $echo = '';
     52        $tLib = $datas['tLib'];
     53        if(!isset($datas['ValVar'])) {
     54                $datas['ValVar']='';
     55        }
     56        // Affichage des paramètres fixes
     57        $tCnt = array();
     58        foreach($tLib as $k=>$s) {
     59                if(!in_array($k,array($datas['ValCal'],$datas['ValVar']))) {
     60                        $tCnt[]=array($s,format_nombre($datas[$k], $datas['iPrec']));
     61                }
     62                $tEnt = array(_T('hydraulic:param_fixes'),_T('hydraulic:valeurs'));
     63        }
     64        // Si il n'y a pas de valeur à varier on ajoute le résultat et le flag de calcul s'il existe
     65        if(!$datas['ValVar']) {
     66                $tCnt[]=array('<b>'.$tLib[$datas['ValCal']].'</b>','<b>'.format_nombre($tRes[0], $datas['iPrec']).'</b>');
     67                if($tFlag) {
     68                        spip_log($tFlag,'hydraulic.'._LOG_DEBUG);
     69                        $tCnt[]= array(_T('hydraulic:type_ecoulement'),_T('hydraulic:flag_'.$tFlag[0]));
     70                }
     71        }
     72        $tableau_fixe = GetResultTable($tCnt,$tEnt);
    7373
    74     // Affichage d'un tableau pour un paramètre qui varie
    75     if($datas['ValVar']) {
    76         $tCnt=array();
    77         foreach($tAbs as $k=>$Abs){
    78             $tCnt[] = array(format_nombre($Abs, $datas['iPrec']),format_nombre($tRes[$k], $datas['iPrec']));
    79         }
    80         $tEnt = array($tLib[$datas['ValVar']],$tLib[$datas['ValCal']]);
    81         $tableau_variable = GetResultTable($tCnt,$tEnt);
     74        // Affichage d'un tableau pour un paramètre qui varie
     75        if($datas['ValVar']) {
     76                $tCnt=array();
     77                foreach($tAbs as $k=>$Abs){
     78                        $tCnt[] = array(format_nombre($Abs, $datas['iPrec']),format_nombre($tRes[$k], $datas['iPrec']));
     79                }
     80                $tEnt = array($tLib[$datas['ValVar']],$tLib[$datas['ValCal']]);
     81                $tableau_variable = GetResultTable($tCnt,$tEnt);
    8282
    83         // Si la première valeur est infinie alors ...
    84         if(is_infinite($tRes[0])){
    85             // ... on supprime cette valeur
    86             unset($tRes[0]);
    87             // ... on tasse le tableau des résultats
    88             $tRes = array_values($tRes);
    89             // ... on supprime l'abscisse correspond
    90             unset($tAbs[0]);
    91             // ... on tasse le tableau des abscisses
    92             $tAbs = array_values($tAbs);
    93         }
     83                // Si la première valeur est infinie alors ...
     84                if(is_infinite($tRes[0])){
     85                        // ... on supprime cette valeur
     86                        unset($tRes[0]);
     87                        // ... on tasse le tableau des résultats
     88                        $tRes = array_values($tRes);
     89                        // ... on supprime l'abscisse correspond
     90                        unset($tAbs[0]);
     91                        // ... on tasse le tableau des abscisses
     92                        $tAbs = array_values($tAbs);
     93                }
    9494
    95         /***************************************************************************
    96         *                        Affichage du graphique
    97         ****************************************************************************/
    98         include_spip('hyd_inc/graph.class');
    99         $oGraph = new cGraph('',$tLib[$datas['ValVar']],'');
    100         if(isset($tRes)) {
    101             $oGraph->AddSerie(
    102                 _T('hydraulic:param_'.$datas['ValCal']),
    103                 $tAbs,
    104                 $tRes,
    105                 '#00a3cd',
    106                 'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}');
    107         }
    108         // Récupération du graphique
    109         $graph = $oGraph->GetGraph('graphique',400,600);
    110         $echo = $graph."\n";
    111     }
    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>';
    117     return $echo;
     95                /***************************************************************************
     96                *                        Affichage du graphique
     97                ****************************************************************************/
     98                include_spip('hyd_inc/graph.class');
     99                $oGraph = new cGraph('',$tLib[$datas['ValVar']],'');
     100                if(isset($tRes)) {
     101                        $oGraph->AddSerie(
     102                                _T('hydraulic:param_'.$datas['ValCal']),
     103                                $tAbs,
     104                                $tRes,
     105                                '#00a3cd',
     106                                'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}');
     107                }
     108                // Récupération du graphique
     109                $graph = $oGraph->GetGraph('graphique',400,600);
     110                $echo = $graph."\n";
     111        }
     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>';
     117        return $echo;
    118118}
    119119
  • _plugins_/hydraulic/trunk/hyd_inc/cache.php

    r95765 r96562  
    55
    66function WriteCacheFile($file_name, $file_content) {
    7    if(!is_dir(_HYD_CACHE_DIRECTORY)) {
    8       mkdir(_HYD_CACHE_DIRECTORY);
    9    }
    10    if(is_dir(_HYD_CACHE_DIRECTORY)) {
    11       if(mt_rand(0,5)==0) {
    12          if(CacheSize()>_HYD_CACHE_MAX_SIZE) {
    13             CacheCleanAll();
    14          }
    15       }
    16       $file_name =_HYD_CACHE_DIRECTORY.$file_name;
    17       if($fichier_cache = fopen($file_name,'w')) {
    18          fwrite($fichier_cache,serialize($file_content));
    19          fclose($fichier_cache);
    20       }
    21    }
     7        if(!is_dir(_HYD_CACHE_DIRECTORY)) {
     8                mkdir(_HYD_CACHE_DIRECTORY);
     9        }
     10        if(is_dir(_HYD_CACHE_DIRECTORY)) {
     11                if(mt_rand(0,5)==0) {
     12                        if(CacheSize()>_HYD_CACHE_MAX_SIZE) {
     13                                CacheCleanAll();
     14                        }
     15                }
     16                $file_name =_HYD_CACHE_DIRECTORY.$file_name;
     17                if($fichier_cache = fopen($file_name,'w')) {
     18                        fwrite($fichier_cache,serialize($file_content));
     19                        fclose($fichier_cache);
     20                }
     21        }
    2222}
    2323
    2424
    2525function ReadCacheFile($FileName) {
    26    $FileName = _HYD_CACHE_DIRECTORY.$FileName;
    27    $aRetour = @unserialize(file_get_contents($FileName));
    28    return $aRetour;
     26        $FileName = _HYD_CACHE_DIRECTORY.$FileName;
     27        $aRetour = @unserialize(file_get_contents($FileName));
     28        return $aRetour;
    2929}
    3030
     
    3535 */
    3636function CacheSize() {
    37    $directory=_HYD_CACHE_DIRECTORY;
    38     $size = 0;
    39     foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
    40         $size+=$file->getSize();
    41     }
    42     return $size;
     37        $directory=_HYD_CACHE_DIRECTORY;
     38        $size = 0;
     39        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
     40                $size+=$file->getSize();
     41        }
     42        return $size;
    4343}
    4444
    4545
    4646function CacheCleanAll() {
    47     $dp = opendir(_HYD_CACHE_DIRECTORY);
    48     while($file = readdir($dp)) {
    49         if($file !== '.' and $file != '..') {
    50             unlink(_HYD_CACHE_DIRECTORY."/".$file);
    51         }
    52     }
     47        $dp = opendir(_HYD_CACHE_DIRECTORY);
     48        while($file = readdir($dp)) {
     49                if($file !== '.' and $file != '..') {
     50                        unlink(_HYD_CACHE_DIRECTORY."/".$file);
     51                }
     52        }
    5353}
    5454
    5555function format_nombre($nombre,$dec) {
    56     if($nombre === false) {
    57         return _T('hydraulic:non_calcule');
    58     } else {
    59         if($nombre=='') $nombre=0;
    60         return number_format($nombre, $dec, '.', ' ');
    61     }
     56        if($nombre === false) {
     57                return _T('hydraulic:non_calcule');
     58        } else {
     59                if($nombre=='') $nombre=0;
     60                return number_format($nombre, $dec, '.', ' ');
     61        }
    6262}
    6363
  • _plugins_/hydraulic/trunk/hyd_inc/charge_datas.php

    r95765 r96562  
    1818 */
    1919function charge_datas($bLibelles = true) {
    20     global $spip_lang;
     20        global $spip_lang;
    2121
    22     $tChOblig = champs_obligatoires();
    23     $tChCalc = champs_obligatoires(true);
    24     spip_log($tChOblig,'hydraulic',_LOG_DEBUG);
    25     $choix_radio = array();
    26     $tLib = array();
    27     $datas=array();
    28     $datas['iPrec']=(int)-log10(_request('rPrec'));
     22        $tChOblig = champs_obligatoires();
     23        $tChCalc = champs_obligatoires(true);
     24        spip_log($tChOblig,'hydraulic',_LOG_DEBUG);
     25        $choix_radio = array();
     26        $tLib = array();
     27        $datas=array();
     28        $datas['iPrec']=(int)-log10(_request('rPrec'));
    2929
    30     //On récupère les données
    31     foreach($tChOblig as $champ) {
    32         if (_request($champ)){
    33             $datas[$champ] = _request($champ);
    34         } else {
    35             $datas[$champ] = 0.;
    36         }
    37         $datas[$champ] = str_replace(',','.',$datas[$champ]); // Bug #574
    38     }
    39     //spip_log($datas,'hydraulic');
    40     // On ajoute la langue en cours pour différencier le fichier de cache par langue
    41     $datas['sLang'] = $spip_lang;
     30        //On récupère les données
     31        foreach($tChOblig as $champ) {
     32                if (_request($champ)){
     33                        $datas[$champ] = _request($champ);
     34                } else {
     35                        $datas[$champ] = 0.;
     36                }
     37                $datas[$champ] = str_replace(',','.',$datas[$champ]); // Bug #574
     38        }
     39        //spip_log($datas,'hydraulic');
     40        // On ajoute la langue en cours pour différencier le fichier de cache par langue
     41        $datas['sLang'] = $spip_lang;
    4242
    43     // Nom du fichier en cache pour calcul déjà fait
    44     $datas['CacheFileName']=md5(serialize($datas));
     43        // Nom du fichier en cache pour calcul déjà fait
     44        $datas['CacheFileName']=md5(serialize($datas));
    4545
    46     // On récupère les différents choix effectué sur les boutons radios ainsi que les libelles de tous les paramètres
    47     foreach($tChCalc as $cle){
    48         $choix_radio[$cle] = _request('choix_champs_'.$cle);
    49         if($bLibelles) {$datas['tLib'][$cle] = _T('hydraulic:param_'.$cle);}
    50     }
     46        // On récupère les différents choix effectué sur les boutons radios ainsi que les libelles de tous les paramètres
     47        foreach($tChCalc as $cle){
     48                $choix_radio[$cle] = _request('choix_champs_'.$cle);
     49                if($bLibelles) {$datas['tLib'][$cle] = _T('hydraulic:param_'.$cle);}
     50        }
    5151
    52     $datas['min'] = 0;
    53     $datas['max'] = 0;
    54     $datas['pas'] = 1;
    55     $datas['i'] = 0;
     52        $datas['min'] = 0;
     53        $datas['max'] = 0;
     54        $datas['pas'] = 1;
     55        $datas['i'] = 0;
    5656
    57     foreach($choix_radio as $ind){
    58         $decoup = explode('_', $ind, 3);
    59         $sVar = $decoup[count($decoup)-1];
    60         // Si il y a une valeur a calculer
    61         if(substr($ind, 0, 3) == 'cal'){
    62             $datas['ValCal'] = $sVar; // Stockage du nom de la variable à calculer
    63         }
    64         // Sinon si une valeur varie
    65         else if(substr($ind, 0, 3) == 'var'){
    66             // alors on récupère sa valeur maximum, minimum et son pas de variation
    67             $datas['min'] = _request('val_min_'.$sVar);
    68             $datas['max'] = _request('val_max_'.$sVar);
    69             $datas['pas'] = _request('pas_var_'.$sVar);
    70             // On fait pointer la variable qui varie sur l'indice de parcours du tableau i
    71             $datas['ValVar'] = $sVar; // Stockage du nom de la variable qui varie
    72             $datas[$sVar] = &$datas['i']; // Pointeur pour relier le compteur de boucle à la variable
    73         }
    74     }
    75     // Pour afficher correctement la valeur maximum avec les pb d'arrondi des réels
    76     $datas['max'] += $datas['pas']/2;
     57        foreach($choix_radio as $ind){
     58                $decoup = explode('_', $ind, 3);
     59                $sVar = $decoup[count($decoup)-1];
     60                // Si il y a une valeur a calculer
     61                if(substr($ind, 0, 3) == 'cal'){
     62                        $datas['ValCal'] = $sVar; // Stockage du nom de la variable à calculer
     63                }
     64                // Sinon si une valeur varie
     65                else if(substr($ind, 0, 3) == 'var'){
     66                        // alors on récupère sa valeur maximum, minimum et son pas de variation
     67                        $datas['min'] = _request('val_min_'.$sVar);
     68                        $datas['max'] = _request('val_max_'.$sVar);
     69                        $datas['pas'] = _request('pas_var_'.$sVar);
     70                        // On fait pointer la variable qui varie sur l'indice de parcours du tableau i
     71                        $datas['ValVar'] = $sVar; // Stockage du nom de la variable qui varie
     72                        $datas[$sVar] = &$datas['i']; // Pointeur pour relier le compteur de boucle à la variable
     73                }
     74        }
     75        // Pour afficher correctement la valeur maximum avec les pb d'arrondi des réels
     76        $datas['max'] += $datas['pas']/2;
    7777
    78     return $datas;
     78        return $datas;
    7979}
    8080?>
  • _plugins_/hydraulic/trunk/hyd_inc/courbe_remous.php

    r95855 r96562  
    22function calcul_courbe_remous($oParam,$oSection,$oLog,$iPrec) {
    33
    4    $trX = array();
    5    $trY = array();
     4        $trX = array();
     5        $trY = array();
    66
    7    if($oParam->rDx > 0) {
    8      // Calcul depuis l'aval
    9      $xDeb = $oParam->rLong;
    10      $xFin = 0;
    11    }
    12    else {
    13      // Calcul depuis l'amont
    14      $xDeb = 0;
    15      $xFin = $oParam->rLong;
    16    }
    17    $dx = - $oParam->rDx;
     7        if($oParam->rDx > 0) {
     8                // Calcul depuis l'aval
     9                $xDeb = $oParam->rLong;
     10                $xFin = 0;
     11        }
     12        else {
     13                // Calcul depuis l'amont
     14                $xDeb = 0;
     15                $xFin = $oParam->rLong;
     16        }
     17        $dx = - $oParam->rDx;
    1818
    19    $trX[] = (real)round($xDeb,$iPrec);
    20    $trY[] = (real)$oParam->rYCL;
     19        $trX[] = (real)round($xDeb,$iPrec);
     20        $trY[] = (real)$oParam->rYCL;
    2121
    22    // Boucle de calcul de la courbe de remous
    23     for($x = $xDeb + $dx; ($dx > 0 && $x <= $xFin) || ($dx < 0 && $x >= $xFin); $x += $dx) {
    24         $rY = (real)$oSection->Calc_Y(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);
     22        // Boucle de calcul de la courbe de remous
     23        for($x = $xDeb + $dx; ($dx > 0 && $x <= $xFin) || ($dx < 0 && $x >= $xFin); $x += $dx) {
     24                $rY = (real)$oSection->Calc_Y(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);
    3737}
    3838?>
  • _plugins_/hydraulic/trunk/hyd_inc/dessinSection.class.php

    r95855 r96562  
    4747 */
    4848class dessinSection {
    49     private $hauteurDessin; // Hauteur du dessin en px
    50     private $largeurDessin; // Largeur du dessin en px
    51     private $marges; // Marge à gauche et à droite du dessin pour le texte
    52     private $mesCouleurs = array('red', 'blue', 'orange', 'green', 'grey', 'black', 'DarkMagenta ', 'cyan');  // Couleur des différentes lignes
    53     private $sectionClass;
    54     private $donnees = array();
    55     private $rValMax = 0; // Hauteur maxi en m à figurer dans le dessin
    56     private $rSnXmax = 0; // Largeur maximum en m à figurer dans le dessin
    57 
    58     function __construct($hauteur, $largeur, $marges, &$section, $lib_data) {
    59         $this->hauteurDessin = (real) $hauteur;
    60         $this->largeurDessin = (real) $largeur - $marges*2;
    61         $this->marges = (real) $marges;
    62         $this->sectionClass = &$section;
    63         $this->donnees = $lib_data;
    64         // On détermine la valeur la plus grande dans le tableau
    65         foreach($this->donnees as $val){
    66             if($val > $this->rValMax){
    67                 $this->rValMax = $val;
    68             }
    69         }
    70         //spip_log($this,'hydraulic.'._LOG_DEBUG);
    71     }
    72 
    73     /**
    74      * Rajoute une ligne à notre dessin.
    75      * $color correspond à la couleur de la ligne
    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();";
    88         return $ligneDessin;
    89     }
    90 
    91     /**
    92      * Convertit un tirant d'eau en mètre en une ordonnée en pixels
    93      */
    94     private function GetDessinY($val) {
    95         // La valeur maximum de l'échelle  en px correspondant à 10% de la hauteur afin de faire plus propre
    96         return round($this->hauteurDessin * (1- 0.9*$val/$this->rValMax), 1)-2;
    97     }
    98 
    99     /**
    100      * Convertit une largeur en mètre en une abscisse en pixels
    101      * @param $Axe détermine si le pixel est à droite (1) ou à gauche (-1) de l'axe de symétrie
    102      * @return Abscisse en pixel à dessiner
    103      */
    104     private function GetDessinX($val,$Axe) {
    105         return $this->marges + round(($this->largeurDessin-14) * (1/2 + $Axe*$val/$this->SnXmax), 1)+7;
    106     }
    107 
    108     /**
    109      * Transforme le tableau de tirants d"eau et charges à afficher en pixel + attribution des couleurs
    110      */
    111     function transformeValeur($tabDonnees){
    112         // On transforme nos valeurs en leur attribuant la valeur en pixel et une couleur qui leur est associé
    113         $result = array();
    114         $couleur = 0;
    115         foreach($tabDonnees as $cle=>$valeur){
    116             $result[$cle][] = $this->GetDessinY($valeur);
    117             $result[$cle][] = $this->mesCouleurs[$couleur];
    118             $couleur++;
    119         }
    120 
    121         asort($result);
    122 
    123         return $result;
    124     }
    125 
    126     // Retourne le dessin de la section
    127     function GetDessinSection(){
    128         // On transforme nos valeurs en pixels
    129         $mesDonnees = $this->transformeValeur($this->donnees);
    130 
    131         // Hauteur dessin - Hauteur de berge, en format pixels
    132         $diffHautBerge = $mesDonnees['rYB'][0];
    133 
    134         // On définit le style de notre dessin
    135         $dessin = '<canvas id="cvsSection" width="'.($this->largeurDessin+2*$this->marges).'" height="'.$this->hauteurDessin.'"></canvas>';
    136 
    137         // On créé la base de notre dessin de section
    138         $dessin.= '
    139         <script type="text/javascript">
    140             var cx = document.getElementById("cvsSection").getContext("2d");
    141             cx.strokeStyle = "black";';
    142         // Récupération des coordonnées de la section à dessiner
    143         $tCoordSn = $this->sectionClass->DessinCoordonnees();
    144 
    145         // Détermination de la largeur max de la section
    146         $this->SnXmax = max($tCoordSn['x'])*2;
    147 
    148         // Dessin des verticales au dessus des berges
    149         $LargeurBerge = $this->sectionClass->CalcGeo('B')/2;
    150         $xBergeGauche = $this->GetDessinX($LargeurBerge,-1);
    151         $xBergeDroite = $this->GetDessinX($LargeurBerge,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([]);";
    161 
    162         // Dessin de la section
    163         $tSnX = array();
    164         $tSnY = array();
    165         // Parcours des points à gauche
    166         for($i=count($tCoordSn['x'])-1; $i>=0; $i-=1) {
    167             $tSnX[] = $this->GetDessinX($tCoordSn['x'][$i],-1);
    168             $tSnY[] = $this->GetDessinY($tCoordSn['y'][$i]);
    169         }
    170         // Parcours des points à droite
    171         for($i=0; $i<count($tCoordSn['x']); $i++) {
    172             $tSnX[] = $this->GetDessinX($tCoordSn['x'][$i],1);
    173             $tSnY[] = $this->GetDessinY($tCoordSn['y'][$i]);
    174         }
    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
    191         // On rajoute les différents libelles avec la couleur qui va bien
    192         foreach($mesDonnees as $cle=>$valeur){
    193             if($cle != 'rYB'){
    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;
    207             }
    208         }
    209 
    210         $dessin.= '
    211             </script>';
    212 
    213         return $dessin;
    214     }
     49        private $hauteurDessin; // Hauteur du dessin en px
     50        private $largeurDessin; // Largeur du dessin en px
     51        private $marges; // Marge à gauche et à droite du dessin pour le texte
     52        private $mesCouleurs = array('red', 'blue', 'orange', 'green', 'grey', 'black', 'DarkMagenta ', 'cyan');  // Couleur des différentes lignes
     53        private $sectionClass;
     54        private $donnees = array();
     55        private $rValMax = 0; // Hauteur maxi en m à figurer dans le dessin
     56        private $rSnXmax = 0; // Largeur maximum en m à figurer dans le dessin
     57
     58        function __construct($hauteur, $largeur, $marges, &$section, $lib_data) {
     59                $this->hauteurDessin = (real) $hauteur;
     60                $this->largeurDessin = (real) $largeur - $marges*2;
     61                $this->marges = (real) $marges;
     62                $this->sectionClass = &$section;
     63                $this->donnees = $lib_data;
     64                // On détermine la valeur la plus grande dans le tableau
     65                foreach($this->donnees as $val){
     66                        if($val > $this->rValMax){
     67                                $this->rValMax = $val;
     68                        }
     69                }
     70                //spip_log($this,'hydraulic.'._LOG_DEBUG);
     71        }
     72
     73        /**
     74        * Rajoute une ligne à notre dessin.
     75        * $color correspond à la couleur de la ligne
     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();";
     88                return $ligneDessin;
     89        }
     90
     91        /**
     92        * Convertit un tirant d'eau en mètre en une ordonnée en pixels
     93        */
     94        private function GetDessinY($val) {
     95                // La valeur maximum de l'échelle  en px correspondant à 10% de la hauteur afin de faire plus propre
     96                return round($this->hauteurDessin * (1- 0.9*$val/$this->rValMax), 1)-2;
     97        }
     98
     99        /**
     100        * Convertit une largeur en mètre en une abscisse en pixels
     101        * @param $Axe détermine si le pixel est à droite (1) ou à gauche (-1) de l'axe de symétrie
     102        * @return Abscisse en pixel à dessiner
     103        */
     104        private function GetDessinX($val,$Axe) {
     105                return $this->marges + round(($this->largeurDessin-14) * (1/2 + $Axe*$val/$this->SnXmax), 1)+7;
     106        }
     107
     108        /**
     109        * Transforme le tableau de tirants d"eau et charges à afficher en pixel + attribution des couleurs
     110        */
     111        function transformeValeur($tabDonnees) {
     112                // On transforme nos valeurs en leur attribuant la valeur en pixel et une couleur qui leur est associé
     113                $result = array();
     114                $couleur = 0;
     115                foreach($tabDonnees as $cle=>$valeur){
     116                        $result[$cle][] = $this->GetDessinY($valeur);
     117                        $result[$cle][] = $this->mesCouleurs[$couleur];
     118                        $couleur++;
     119                }
     120
     121                asort($result);
     122
     123                return $result;
     124        }
     125
     126        // Retourne le dessin de la section
     127        function GetDessinSection() {
     128                // On transforme nos valeurs en pixels
     129                $mesDonnees = $this->transformeValeur($this->donnees);
     130
     131                // Hauteur dessin - Hauteur de berge, en format pixels
     132                $diffHautBerge = $mesDonnees['rYB'][0];
     133
     134                // On définit le style de notre dessin
     135                $dessin = '<canvas id="cvsSection" width="'.($this->largeurDessin+2*$this->marges).'" height="'.$this->hauteurDessin.'"></canvas>';
     136
     137                // On créé la base de notre dessin de section
     138                $dessin.= '
     139                <script type="text/javascript">
     140                        var cx = document.getElementById("cvsSection").getContext("2d");
     141                        cx.strokeStyle = "black";';
     142                        // Récupération des coordonnées de la section à dessiner
     143                        $tCoordSn = $this->sectionClass->DessinCoordonnees();
     144
     145                        // Détermination de la largeur max de la section
     146                        $this->SnXmax = max($tCoordSn['x'])*2;
     147
     148                        // Dessin des verticales au dessus des berges
     149                        $LargeurBerge = $this->sectionClass->CalcGeo('B')/2;
     150                        $xBergeGauche = $this->GetDessinX($LargeurBerge,-1);
     151                        $xBergeDroite = $this->GetDessinX($LargeurBerge,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([]);";
     161
     162                        // Dessin de la section
     163                        $tSnX = array();
     164                        $tSnY = array();
     165                        // Parcours des points à gauche
     166                        for($i=count($tCoordSn['x'])-1; $i>=0; $i-=1) {
     167                                $tSnX[] = $this->GetDessinX($tCoordSn['x'][$i],-1);
     168                                $tSnY[] = $this->GetDessinY($tCoordSn['y'][$i]);
     169                        }
     170                        // Parcours des points à droite
     171                        for($i=0; $i<count($tCoordSn['x']); $i++) {
     172                                $tSnX[] = $this->GetDessinX($tCoordSn['x'][$i],1);
     173                                $tSnY[] = $this->GetDessinY($tCoordSn['y'][$i]);
     174                        }
     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
     191                        // On rajoute les différents libelles avec la couleur qui va bien
     192                        foreach($mesDonnees as $cle=>$valeur){
     193                                if($cle != 'rYB'){
     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;
     207                                }
     208                        }
     209
     210                        $dessin.= '
     211                </script>';
     212
     213                return $dessin;
     214        }
    215215}
    216216?>
  • _plugins_/hydraulic/trunk/hyd_inc/dichotomie.class.php

    r95855 r96562  
    2828 */
    2929class cDichotomie {
    30     private $oLog; ///< Journal de calcul
     30        private $oLog; ///< Journal de calcul
    3131
    32     const IDEFINT = 100; ///< Pas de parcours de l'intervalle pour initialisation dichotomie
    33     const IDICMAX = 100; ///< Itérations maximum de la dichotomie
     32        const IDEFINT = 100; ///< Pas de parcours de l'intervalle pour initialisation dichotomie
     33        const IDICMAX = 100; ///< Itérations maximum de la dichotomie
    3434
    35     private $objet; ///< Objet contenant la méthode de calcul du débit
    36     private $sFnCalculQ; ///< Nom de la méthode de calcul du débit
     35        private $objet; ///< Objet contenant la méthode de calcul du débit
     36        private $sFnCalculQ; ///< Nom de la méthode de calcul du débit
    3737
    38     /**
    39      * Construction de la classe.
    40      * @param $oLog Journal de calcul
    41      * @param $objet Objet contenant la méthode de calcul du débit et la
    42      *      propriété VarCal pointeur vers la variable à calculer
    43      * @param $sFnCalculQ Nom de la méthode de calcul du débit
    44      */
    45     public function __construct(&$oLog,&$objet,$sFnCalculQ) {
    46         $this->oLog = &$oLog;
    47         $this->objet = &$objet;
    48         $this->sFnCalculQ = $sFnCalculQ;
    49     }
     38        /**
     39        * Construction de la classe.
     40        * @param $oLog Journal de calcul
     41        * @param $objet Objet contenant la méthode de calcul du débit et la
     42        *      propriété VarCal pointeur vers la variable à calculer
     43        * @param $sFnCalculQ Nom de la méthode de calcul du débit
     44        */
     45        public function __construct(&$oLog,&$objet,$sFnCalculQ) {
     46                $this->oLog = &$oLog;
     47                $this->objet = &$objet;
     48                $this->sFnCalculQ = $sFnCalculQ;
     49        }
    5050
    51     private function CalculQ() {
    52         $sFnCalculQ = $this->sFnCalculQ;
    53         $res = $this->objet->$sFnCalculQ();
    54         if(!is_array($res)) {
    55             $res = array($res,-1);
    56         }
    57         spip_log('CalculQ('.$this->objet->VarCal.')='.$res[0],'hydraulic',_LOG_DEBUG);
    58         return $res;
    59     }
     51        private function CalculQ() {
     52                $sFnCalculQ = $this->sFnCalculQ;
     53                $res = $this->objet->$sFnCalculQ();
     54                if(!is_array($res)) {
     55                        $res = array($res,-1);
     56                }
     57                spip_log('CalculQ('.$this->objet->VarCal.')='.$res[0],'hydraulic',_LOG_DEBUG);
     58                return $res;
     59        }
    6060
    61     /**
    62      * Calcul à l'ouvrage
    63      * @param $sCalc Variable à calculer (Nom de la propriété de l'objet)
    64      * @param $QT Débit cible
    65      * @param $rTol Précision attendue
    66      * @param $rInit Valeur initiale
    67      */
    68     public function calculer($QT,$rTol,$rInit=0.) {
    69         spip_log("Dichotomie->calculer($QT,$rTol,$rInit)",'hydraulic.'._LOG_DEBUG);
    70         $XminInit = 1E-8;
    71         $this->objet->VarCal = $XminInit;
    72         list($Q1,$nFlag) = $this->CalculQ();
    73         $XmaxInit = max(1,$rInit)*100;
    74         $this->objet->VarCal = $XmaxInit;
    75         list($Q2,$nFlag) = $this->CalculQ();
    76         $DX = ($XmaxInit - $XminInit) / floatval(self::IDEFINT);
    77         $nIterMax = floor(max($XmaxInit - $rInit,$rInit - $XminInit) / $DX + 1);
    78         spip_log("QT=$QT nIterMax=$nIterMax XminInit=$XminInit XmaxInit=$XmaxInit DX=$DX",'hydraulic',_LOG_DEBUG);
    79         $Xmin = $rInit;
    80         $Xmax = $rInit;
    81         $X1 = $rInit;
    82         $X2 = $rInit;
    83         $this->objet->VarCal = $rInit;
    84         list($Q,$nFlag) = $this->CalculQ();
    85         $Q1 = $Q;
    86         $Q2 = $Q;
    87         ///< @todo : Chercher en dehors de l'intervalle en le décalant à droite ou à gauche en fonction de la valeur
     61        /**
     62        * Calcul à l'ouvrage
     63        * @param $sCalc Variable à calculer (Nom de la propriété de l'objet)
     64        * @param $QT Débit cible
     65        * @param $rTol Précision attendue
     66        * @param $rInit Valeur initiale
     67        */
     68        public function calculer($QT,$rTol,$rInit=0.) {
     69                spip_log("Dichotomie->calculer($QT,$rTol,$rInit)",'hydraulic.'._LOG_DEBUG);
     70                $XminInit = 1E-8;
     71                $this->objet->VarCal = $XminInit;
     72                list($Q1,$nFlag) = $this->CalculQ();
     73                $XmaxInit = max(1,$rInit)*100;
     74                $this->objet->VarCal = $XmaxInit;
     75                list($Q2,$nFlag) = $this->CalculQ();
     76                $DX = ($XmaxInit - $XminInit) / floatval(self::IDEFINT);
     77                $nIterMax = floor(max($XmaxInit - $rInit,$rInit - $XminInit) / $DX + 1);
     78                spip_log("QT=$QT nIterMax=$nIterMax XminInit=$XminInit XmaxInit=$XmaxInit DX=$DX",'hydraulic',_LOG_DEBUG);
     79                $Xmin = $rInit;
     80                $Xmax = $rInit;
     81                $X1 = $rInit;
     82                $X2 = $rInit;
     83                $this->objet->VarCal = $rInit;
     84                list($Q,$nFlag) = $this->CalculQ();
     85                $Q1 = $Q;
     86                $Q2 = $Q;
     87                ///< @todo : Chercher en dehors de l'intervalle en le décalant à droite ou à gauche en fonction de la valeur
    8888
    89         for($nIter=1;$nIter<=$nIterMax;$nIter++) {
    90             //Ouverture de l'intervalle des deux côtés : à droite puis à gauche
    91             $Xmax = $Xmax + $DX;
    92             if($Xmax > $XmaxInit xor $DX <= 0) $Xmax = $XmaxInit;
    93             $this->objet->VarCal = $Xmax;
    94             list($Q,$nFlag) = $this->CalculQ();
    95             if($Q1 < $Q2 xor $Q <= $Q2) {
    96                 $Q2 = $Q;
    97                 $X2 = $Xmax;
    98             }
    99             if($Q1 < $Q2 xor $Q >= $Q1) {
    100                 $Q1 = $Q;
    101                 $X1 = $Xmax;
    102             }
    103             $Xmin = $Xmin - $DX;
    104             if($Xmin < $XminInit xor $DX <= 0) {
    105                 $Xmin = $XminInit;
    106             }
    107             $this->objet->VarCal = $Xmin;
    108             list($Q,$nFlag) = $this->CalculQ();
    109             if($Q1 < $Q2 xor $Q <= $Q2) {
    110                 $Q2 = $Q;
    111                 $X2 = $Xmin;
    112             }
    113             if($Q1 < $Q2 xor $Q >= $Q1) {
    114                 $Q1 = $Q;
    115                 $X1 = $Xmin;
    116             }
     89                for($nIter=1;$nIter<=$nIterMax;$nIter++) {
     90                        //Ouverture de l'intervalle des deux côtés : à droite puis à gauche
     91                        $Xmax = $Xmax + $DX;
     92                        if($Xmax > $XmaxInit xor $DX <= 0) $Xmax = $XmaxInit;
     93                        $this->objet->VarCal = $Xmax;
     94                        list($Q,$nFlag) = $this->CalculQ();
     95                        if($Q1 < $Q2 xor $Q <= $Q2) {
     96                                $Q2 = $Q;
     97                                $X2 = $Xmax;
     98                        }
     99                        if($Q1 < $Q2 xor $Q >= $Q1) {
     100                                $Q1 = $Q;
     101                                $X1 = $Xmax;
     102                        }
     103                        $Xmin = $Xmin - $DX;
     104                        if($Xmin < $XminInit xor $DX <= 0) {
     105                                $Xmin = $XminInit;
     106                        }
     107                        $this->objet->VarCal = $Xmin;
     108                        list($Q,$nFlag) = $this->CalculQ();
     109                        if($Q1 < $Q2 xor $Q <= $Q2) {
     110                                $Q2 = $Q;
     111                                $X2 = $Xmin;
     112                        }
     113                        if($Q1 < $Q2 xor $Q >= $Q1) {
     114                                $Q1 = $Q;
     115                                $X1 = $Xmin;
     116                        }
    117117
    118             spip_log("nIter=$nIter Xmin=$Xmin Xmax=$Xmax",'hydraulic',_LOG_DEBUG);
    119             spip_log("X1=$X1 Q1=$Q1 X2=$X2 Q2=$Q2",'hydraulic',_LOG_DEBUG);
    120             spip_log('$QT > $Q1 xor $QT >= $Q2 = '.($QT > $Q1 xor $QT >= $Q2),'hydraulic',_LOG_DEBUG);
     118                        spip_log("nIter=$nIter Xmin=$Xmin Xmax=$Xmax",'hydraulic',_LOG_DEBUG);
     119                        spip_log("X1=$X1 Q1=$Q1 X2=$X2 Q2=$Q2",'hydraulic',_LOG_DEBUG);
     120                        spip_log('$QT > $Q1 xor $QT >= $Q2 = '.($QT > $Q1 xor $QT >= $Q2),'hydraulic',_LOG_DEBUG);
    121121
    122             if($QT > $Q1 xor $QT >= $Q2) {break;}
    123         }
     122                        if($QT > $Q1 xor $QT >= $Q2) {break;}
     123                }
    124124
    125         if($nIter >= self::IDEFINT) {
    126             // Pas d'intervalle trouvé avec au moins une solution
    127             if($Q2 < $QT and $Q1 < $QT) {
    128                 // Cote de l'eau trop basse pour passer le débit il faut ouvrir un autre ouvrage
    129                 $this->objet->VarCal = $XmaxInit;
    130             }
    131             else {
    132                 // Cote de l'eau trop grande il faut fermer l'ouvrage
    133                 $this->objet->VarCal = $XminInit;
    134 
    135             }
    136             list($Q,$nFlag) = $this->CalculQ();
    137             $nFlag = -1;
    138             $sLog = ($Q1<$Q2)?"Q($X1)=$Q1 &lt; Q($X2)=$Q2":"Q($X2)=$Q2 &lt; Q($X1)=$Q1";
    139             $sLog = ($QT<$Q1)?"$QT &lt; $sLog":"$sLog &lt; $QT";
    140             $this->oLog->Add(_T('hydraulic:dichotomie_intervalle').' : '.
    141                 $sLog,true);
    142         }
    143         else {
    144             // Dichotomie
    145             $X = $rInit;
    146             for($nIter = 1; $nIter<=self::IDICMAX;$nIter++) {
    147                 $this->objet->VarCal=$X;
    148                 spip_log('rVarC='.$this->objet->VarCal,'hydraulic',_LOG_DEBUG);
    149                 list($Q,$nFlag) = $this->CalculQ();
    150                 //~ if($QT!=0 && abs($Q/$QT-1.) <= $rTol) {break;}
    151                 if($QT!=0 && abs($X1-$X2) <= $rTol) {break;}
    152                 if($QT < $Q xor $Q1 <= $Q2) {
    153                     // QT < IQ et Q(X1) > Q(X2) ou pareil en inversant les inégalités
    154                     $X1=$this->objet->VarCal;
    155                 }
    156                 else {
    157                     // QT < IQ et Q(X1) < Q(X2) ou pareil en inversant les inégalités
    158                     $X2=$this->objet->VarCal;
    159                 }
    160                 $X=($X2+$X1)*0.5;
    161             }
    162             if($nIter == self::IDICMAX) {
    163                 $this->oLog->Add(
    164                     _T('hydraulic:dichotomie_non_convergence').' '.format_nombre($Q, $this->data['iPrec']),
    165                     true);
    166                 $nFlag = -1;
    167             }
    168         }
    169         spip_log('rVarC='.$this->objet->VarCal." nFlag=$nFlag",'hydraulic.'._LOG_DEBUG);
    170         return array($this->objet->VarCal,$nFlag);
    171     }
     125                if($nIter >= self::IDEFINT) {
     126                        // Pas d'intervalle trouvé avec au moins une solution
     127                        if($Q2 < $QT and $Q1 < $QT) {
     128                                // Cote de l'eau trop basse pour passer le débit il faut ouvrir un autre ouvrage
     129                                $this->objet->VarCal = $XmaxInit;
     130                        }
     131                        else {
     132                                // Cote de l'eau trop grande il faut fermer l'ouvrage
     133                                $this->objet->VarCal = $XminInit;
     134                        }
     135                        list($Q,$nFlag) = $this->CalculQ();
     136                        $nFlag = -1;
     137                        $sLog = ($Q1<$Q2)?"Q($X1)=$Q1 &lt; Q($X2)=$Q2":"Q($X2)=$Q2 &lt; Q($X1)=$Q1";
     138                        $sLog = ($QT<$Q1)?"$QT &lt; $sLog":"$sLog &lt; $QT";
     139                        $this->oLog->Add(_T('hydraulic:dichotomie_intervalle').' : '.
     140                        $sLog,true);
     141                }
     142                else {
     143                        // Dichotomie
     144                        $X = $rInit;
     145                        for($nIter = 1; $nIter<=self::IDICMAX;$nIter++) {
     146                                $this->objet->VarCal=$X;
     147                                spip_log('rVarC='.$this->objet->VarCal,'hydraulic',_LOG_DEBUG);
     148                                list($Q,$nFlag) = $this->CalculQ();
     149                                //~ if($QT!=0 && abs($Q/$QT-1.) <= $rTol) {break;}
     150                                if($QT!=0 && abs($X1-$X2) <= $rTol) {break;}
     151                                if($QT < $Q xor $Q1 <= $Q2) {
     152                                        // QT < IQ et Q(X1) > Q(X2) ou pareil en inversant les inégalités
     153                                        $X1=$this->objet->VarCal;
     154                                }
     155                                else {
     156                                        // QT < IQ et Q(X1) < Q(X2) ou pareil en inversant les inégalités
     157                                        $X2=$this->objet->VarCal;
     158                                }
     159                                $X=($X2+$X1)*0.5;
     160                        }
     161                        if($nIter == self::IDICMAX) {
     162                                $this->oLog->Add(
     163                                        _T('hydraulic:dichotomie_non_convergence').' '.format_nombre($Q, $this->data['iPrec']),
     164                                true);
     165                                $nFlag = -1;
     166                        }
     167                }
     168                spip_log('rVarC='.$this->objet->VarCal." nFlag=$nFlag",'hydraulic.'._LOG_DEBUG);
     169                return array($this->objet->VarCal,$nFlag);
     170        }
    172171
    173172}
  • _plugins_/hydraulic/trunk/hyd_inc/form_calcul_section.class.php

    r96285 r96562  
    44class form_calcul_section extends form_section {
    55
    6     // Définition de la variable à calculer par défaut
    7     protected $sVarCal = '';
     6        // Définition de la variable à calculer par défaut
     7        protected $sVarCal = '';
    88
    9     // Définition du nombre de colonnes du formulaire
    10     protected $nb_col = 4;
     9        // Définition du nombre de colonnes du formulaire
     10        protected $nb_col = 4;
    1111
    12     // Définition des variables calculables et de leur code de langue
    13     public $champs_select_calc = array(
    14         'Hs'   => 'charge_spe',
    15         'Hsc'  => 'charge_critique',
    16         'B'    => 'larg_miroir',
    17         'P'    => 'perim_mouille',
    18         'S'    => 'surf_mouille',
    19         'R'    => 'rayon_hyd',
    20         'V'    => 'vit_moy',
    21         'Fr'   => 'froud',
    22         'Yc'   => 'tirant_eau_crit',
    23         'Yn'   => 'tirant_eau_norm',
    24         'Yf'   => 'tirant_eau_fluv',
    25         'Yt'   => 'tirant_eau_torr',
    26         'Yco'  => 'tirant_eau_conj',
    27         'J'    => 'perte_charge',
    28         'I-J'  => 'var_lin',
    29         'Imp'  => 'impulsion',
    30         'Tau0' => 'force_tract'
    31     );
     12        // Définition des variables calculables et de leur code de langue
     13        public $champs_select_calc = array(
     14                'Hs'   => 'charge_spe',
     15                'Hsc'  => 'charge_critique',
     16                'B'    => 'larg_miroir',
     17                'P'    => 'perim_mouille',
     18                'S'    => 'surf_mouille',
     19                'R'    => 'rayon_hyd',
     20                'V'    => 'vit_moy',
     21                'Fr'   => 'froud',
     22                'Yc'   => 'tirant_eau_crit',
     23                'Yn'   => 'tirant_eau_norm',
     24                'Yf'   => 'tirant_eau_fluv',
     25                'Yt'   => 'tirant_eau_torr',
     26                'Yco'  => 'tirant_eau_conj',
     27                'J'    => 'perte_charge',
     28                'I-J'  => 'var_lin',
     29                'Imp'  => 'impulsion',
     30                'Tau0' => 'force_tract'
     31        );
    3232
    33     function __construct() {
    34         $this->saisies['c_hyd'] = array(
    35             'caract_hydraulique',
    36             array(
    37                 'rQ'       =>array('debit', 1.2, 'op'),
    38                 'rY'       =>array('tirant_eau', 0.8, 'op')
    39             ),
    40             'var'
    41         );
    42         $this->saisies['param_calcul'] = array(
    43             'param_calcul',
    44             array(
    45                 'rPrec' => array('precision',0.001,'fop')
    46             ),
    47             'fix'
    48         );
    49         $this->saisies['val_a_cal'] = array(
    50             'donnee_calc',
    51             array(
    52                 'val_a_cal' => array('choix_donnee_calc','form_calcul_section_valacal','s')
    53             ),
    54             'fix'
    55         );
    56         parent::__construct();
    57     }
     33        function __construct() {
     34                $this->saisies['c_hyd'] = array(
     35                        'caract_hydraulique',
     36                        array(
     37                                'rQ'       =>array('debit', 1.2, 'op'),
     38                                'rY'       =>array('tirant_eau', 0.8, 'op')
     39                        ),
     40                        'var'
     41                );
     42                $this->saisies['param_calcul'] = array(
     43                        'param_calcul',
     44                        array(
     45                                'rPrec' => array('precision',0.001,'fop')
     46                        ),
     47                        'fix'
     48                );
     49                $this->saisies['val_a_cal'] = array(
     50                        'donnee_calc',
     51                        array(
     52                                'val_a_cal' => array('choix_donnee_calc','form_calcul_section_valacal','s')
     53                        ),
     54                        'fix'
     55                );
     56                parent::__construct();
     57        }
    5858
    5959
    60     public function charger() {
    61         $valeurs = parent::charger();
    62         $valeurs = array_merge($valeurs,
    63             array(
    64                 'choix_section' => 'FT',
    65                 'val_a_cal'  => 'Hs',
    66                 'choix_champs_select' => $this->champs_select_calc
    67             )
    68         );
    69         return $valeurs;
    70     }
     60        public function charger() {
     61                $valeurs = parent::charger();
     62                $valeurs = array_merge($valeurs,
     63                        array(
     64                                'choix_section' => 'FT',
     65                                'val_a_cal'  => 'Hs',
     66                                'choix_champs_select' => $this->champs_select_calc
     67                        )
     68                );
     69                return $valeurs;
     70        }
    7171
    72     protected function calculer() {
    73         $this->creer_section_param();
     72        protected function calculer() {
     73                $this->creer_section_param();
    7474
    75         // On transforme les champs du tableau des données du formulaire en variables
    76         extract($this->data, EXTR_OVERWRITE|EXTR_REFS);
     75                // On transforme les champs du tableau des données du formulaire en variables
     76                extract($this->data, EXTR_OVERWRITE|EXTR_REFS);
    7777
    78         if(isset($ValVar) && $ValVar != ''){
    79             // Pointage de la variable qui varie sur le bon attribut
    80             if($ValVar == 'rY' or in_array($ValVar, $this->get_champs_section($choix_section))){
    81                 $this->oSn->{$ValVar} = &$i;
    82             }
    83             else{
    84                 $this->oP->{$ValVar} = &$i;
    85             }
    86             // Définition de la variable à calculer
    87             $tVarCal = array($val_a_cal);
    88             $this->data['ValCal'] = $val_a_cal;
    89         }
    90         else {
    91             switch($choix_section) {
    92                 case 'FR':
    93                     $tVarCal = array('Hs', 'Hsc', 'B', 'P', 'S', 'R', 'V', 'Fr', 'Yc', 'Yn', 'Yf', 'Yt', 'Yco', 'J', 'I-J', 'Imp', 'Tau0');
    94                     break;
    95                 default:
    96                     // Le calcul de la hauteur conjuguée n'est pas OK pour les sections autres que rectangulaire
    97                     $tVarCal = array('Hs', 'Hsc', 'B', 'P', 'S', 'R', 'V', 'Fr', 'Yc', 'Yn', 'Yf', 'Yt', 'J', 'I-J', 'Imp', 'Tau0');
    98             }
    99         }
     78                if(isset($ValVar) && $ValVar != ''){
     79                        // Pointage de la variable qui varie sur le bon attribut
     80                        if($ValVar == 'rY' or in_array($ValVar, $this->get_champs_section($choix_section))){
     81                                $this->oSn->{$ValVar} = &$i;
     82                        }
     83                        else{
     84                                $this->oP->{$ValVar} = &$i;
     85                        }
     86                        // Définition de la variable à calculer
     87                        $tVarCal = array($val_a_cal);
     88                        $this->data['ValCal'] = $val_a_cal;
     89                }
     90                else {
     91                        switch($choix_section) {
     92                                case 'FR':
     93                                $tVarCal = array('Hs', 'Hsc', 'B', 'P', 'S', 'R', 'V', 'Fr', 'Yc', 'Yn', 'Yf', 'Yt', 'Yco', 'J', 'I-J', 'Imp', 'Tau0');
     94                                break;
     95                                default:
     96                                // Le calcul de la hauteur conjuguée n'est pas OK pour les sections autres que rectangulaire
     97                                $tVarCal = array('Hs', 'Hsc', 'B', 'P', 'S', 'R', 'V', 'Fr', 'Yc', 'Yn', 'Yf', 'Yt', 'J', 'I-J', 'Imp', 'Tau0');
     98                        }
     99                }
    100100
    101         $tRes = array(); // Tableau des résultats (ordonnées)
    102         $tAbs = array(); // Tableau des abscisses
    103         for($i = $min; $i <= $max; $i+= $pas){
    104             $this->oSn->Reset(true);
    105             $tAbs[] = $i;
    106             foreach($tVarCal as $sCalc){
    107                 $rY = $this->oSn->rY;
    108                 if(!in_array($sCalc,array('Yn', 'Yc', 'Hsc'))){
    109                     $tRes[] = $this->oSn->Calc($sCalc);
    110                 }
    111                 else{
    112                     $tRes[] = $this->oSn->CalcGeo($sCalc);
    113                 }
    114                 $this->oSn->rY = $rY;
    115             }
    116         }
    117         return array('abs'=>$tAbs,'res'=>$tRes,'tVarCal'=>$tVarCal);
    118     }
     101                $tRes = array(); // Tableau des résultats (ordonnées)
     102                $tAbs = array(); // Tableau des abscisses
     103                for($i = $min; $i <= $max; $i+= $pas){
     104                        $this->oSn->Reset(true);
     105                        $tAbs[] = $i;
     106                        foreach($tVarCal as $sCalc){
     107                                $rY = $this->oSn->rY;
     108                                if(!in_array($sCalc,array('Yn', 'Yc', 'Hsc'))){
     109                                        $tRes[] = $this->oSn->Calc($sCalc);
     110                                }
     111                                else{
     112                                        $tRes[] = $this->oSn->CalcGeo($sCalc);
     113                                }
     114                                $this->oSn->rY = $rY;
     115                        }
     116                }
     117                return array('abs'=>$tAbs,'res'=>$tRes,'tVarCal'=>$tVarCal);
     118        }
    119119
    120120
    121     /** ************************************************************************
    122      * Affichage des tableaux et graphiques des résultats des calculs
    123      * @return Chaîne de caractère avec le code HTML à afficher
    124      ***************************************************************************/
    125     protected function afficher_result() {
    126         if(isset($this->data['ValVar']) && $this->data['ValVar'] != ''){
    127             // Une donnée varie : affichage du graphique et des tableaux de base
    128             return parent::afficher_result();
    129         }
    130         else{
    131             // Toutes les données sont fixes affichage du tableau et du schéma de la section
    132             $tRes = $this->result['res'];
    133             // Tableaux des résultats des calculs
    134             $tC =array();
    135             $c = 0;
    136             foreach($this->result['tVarCal'] as $champ){
    137                 $tC[$c][] = _T('hydraulic:'.$this->champs_select_calc[$champ]);
    138                 $tC[$c][] = format_nombre($tRes[$c], $this->data['iPrec']);
    139                 $c++;
    140             }
    141             $echo = '<div style="display:inline-block;">';
    142             $echo .= $this->get_result_table($tC);
    143             $echo .= '</div>';
     121        /** ************************************************************************
     122        * Affichage des tableaux et graphiques des résultats des calculs
     123        * @return Chaîne de caractère avec le code HTML à afficher
     124        ***************************************************************************/
     125        protected function afficher_result() {
     126                if(isset($this->data['ValVar']) && $this->data['ValVar'] != ''){
     127                        // Une donnée varie : affichage du graphique et des tableaux de base
     128                        return parent::afficher_result();
     129                }
     130                else{
     131                        // Toutes les données sont fixes affichage du tableau et du schéma de la section
     132                        $tRes = $this->result['res'];
     133                        // Tableaux des résultats des calculs
     134                        $tC =array();
     135                        $c = 0;
     136                        foreach($this->result['tVarCal'] as $champ){
     137                                $tC[$c][] = _T('hydraulic:'.$this->champs_select_calc[$champ]);
     138                                $tC[$c][] = format_nombre($tRes[$c], $this->data['iPrec']);
     139                                $c++;
     140                        }
     141                        $echo = '<div style="display:inline-block;">';
     142                                $echo .= $this->get_result_table($tC);
     143                        $echo .= '</div>';
    144144
    145             // Schéma de la section
    146             $lib_datas = array();
    147             $par = 0;
    148             foreach($this->result['tVarCal'] as $champ){
    149                 if(substr($this->champs_select_calc[$champ], 0, 6) == 'tirant' || $champ == 'Hs' || $champ == 'Hsc'){
    150                     $lib_datas[$champ] = $tRes[$par];
    151                 }
    152                 $par++;
    153             }
     145                        // Schéma de la section
     146                        $lib_datas = array();
     147                        $par = 0;
     148                        foreach($this->result['tVarCal'] as $champ){
     149                                if(substr($this->champs_select_calc[$champ], 0, 6) == 'tirant' || $champ == 'Hs' || $champ == 'Hsc'){
     150                                        $lib_datas[$champ] = $tRes[$par];
     151                                }
     152                                $par++;
     153                        }
    154154
    155             $lib_datas['rYB'] = $this->oP->rYB;
    156             include_spip('hyd_inc/dessinSection.class');
    157             $dessinSection = new dessinSection(250, 400, 100, $this->oSn, $lib_datas);
    158             $echo.= $dessinSection->GetDessinSection();
    159             return $echo;
    160         }
    161     }
     155                        $lib_datas['rYB'] = $this->oP->rYB;
     156                        include_spip('hyd_inc/dessinSection.class');
     157                        $dessinSection = new dessinSection(250, 400, 100, $this->oSn, $lib_datas);
     158                        $echo.= $dessinSection->GetDessinSection();
     159                        return $echo;
     160                }
     161        }
    162162
    163     protected function get_champs_libelles() {
    164         $lib = parent::get_champs_libelles();
    165         foreach($this->champs_select_calc as $cle=>$champ) {
    166             $lib[$cle] = _T('hydraulic:'.$champ);
    167         }
    168         return $lib;
    169     }
     163        protected function get_champs_libelles() {
     164                $lib = parent::get_champs_libelles();
     165                foreach($this->champs_select_calc as $cle=>$champ) {
     166                        $lib[$cle] = _T('hydraulic:'.$champ);
     167                }
     168                return $lib;
     169        }
    170170}
    171171?>
  • _plugins_/hydraulic/trunk/hyd_inc/form_calcul_section_valacal.html

    r95855 r96562  
    11[(#REM) Liste déroulante de choix de la variable à calculer pour le formulaire de calcul sur les sections paramétrées]
    22
    3         <td colspan="3">
    4             <select name="val_a_cal" id="val_a_cal">
    5                 <BOUCLE_champs_select_cal(POUR){tableau #ENV{choix_champs_select}}>
    6                     <option value="#CLE" [(#ENV{val_a_cal}|=={#CLE}|?{'selected',''})]>[(#VALEUR|traduction_hydraulic)]</option>
    7                 </BOUCLE_champs_select_cal>
    8             </select>
    9             [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    10         </td>
     3<td colspan="3">
     4        <select name="val_a_cal" id="val_a_cal">
     5                <BOUCLE_champs_select_cal(POUR){tableau #ENV{choix_champs_select}}>
     6                        <option value="#CLE" [(#ENV{val_a_cal}|=={#CLE}|?{'selected',''})]>[(#VALEUR|traduction_hydraulic)]</option>
     7                </BOUCLE_champs_select_cal>
     8        </select>
     9        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
     10</td>
    1111
    12     </tr>
     12        </tr>
  • _plugins_/hydraulic/trunk/hyd_inc/form_champ_fixvarcal.html

    r95765 r96562  
    1         <td>
    2             <input id="champ_#ENV{cle}" type="text" value="[(#ENV{choix_champs}|=={#ENV{cle}}|?{'',#ENV{#ENV{cle}}})]" maxlength="30" name="#ENV{cle}" [(#ENV{choix_champs_#ENV{cle}}|match{^((calcul_val_#ENV{cle})|(varier_val_#ENV{cle}))$}|?{'disabled="true"',''})]/>
    3             [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#ENV{cle}})</div>]
    4         </td>
     1<td>
     2        <input id="champ_#ENV{cle}" type="text" value="[(#ENV{choix_champs}|=={#ENV{cle}}|?{'',#ENV{#ENV{cle}}})]" maxlength="30" name="#ENV{cle}" [(#ENV{choix_champs_#ENV{cle}}|match{^((calcul_val_#ENV{cle})|(varier_val_#ENV{cle}))$}|?{'disabled="true"',''})]/>
     3        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#ENV{cle}})</div>]
     4</td>
    55
    6         [(#REM) Les 3 boutons radios pour le choix de la variable à calculer, varier, ou fixer]
    7         [(#ENV{fixvarcal}|!={fix}|oui)
    8             <td align="center">
    9                 <input type="radio" id="fix_#ENV{cle}" name="choix_champs_#ENV{cle}" value="fix" onclick="gestion_radios('#ENV{cle}', 'fix')" [(#ENV{choix_champs_#ENV{cle}}|=={fix}|oui)checked="checked"]/>
    10             </td>
     6[(#REM) Les 3 boutons radios pour le choix de la variable à calculer, varier, ou fixer]
     7[(#ENV{fixvarcal}|!={fix}|oui)
     8        <td align="center">
     9                <input type="radio" id="fix_#ENV{cle}" name="choix_champs_#ENV{cle}" value="fix" onclick="gestion_radios('#ENV{cle}', 'fix')" [(#ENV{choix_champs_#ENV{cle}}|=={fix}|oui)checked="checked"]/>
     10        </td>
    1111
    12             <td align="center">
    13                 <input type="radio" id="var_#ENV{cle}" name="choix_champs_#ENV{cle}" value="var" onclick="gestion_radios('#ENV{cle}', 'var')" [(#ENV{choix_champs_#ENV{cle}}|=={var}|oui)checked="checked"]/>
    14             </td>
    15             [(#ENV{fixvarcal}|=={cal}|oui)
    16                 <td align="center">
    17                     <input type="radio" id="cal_#ENV{cle}" name="choix_champs_#ENV{cle}" value="cal" onclick="gestion_radios('#ENV{cle}', 'cal')" [(#ENV{choix_champs_#ENV{cle}}|=={cal}|oui)checked="checked"]/>
    18                 </td>
    19             ]
    20         ]
    21     </tr>
     12        <td align="center">
     13                <input type="radio" id="var_#ENV{cle}" name="choix_champs_#ENV{cle}" value="var" onclick="gestion_radios('#ENV{cle}', 'var')" [(#ENV{choix_champs_#ENV{cle}}|=={var}|oui)checked="checked"]/>
     14        </td>
     15        [(#ENV{fixvarcal}|=={cal}|oui)
     16                <td align="center">
     17                        <input type="radio" id="cal_#ENV{cle}" name="choix_champs_#ENV{cle}" value="cal" onclick="gestion_radios('#ENV{cle}', 'cal')" [(#ENV{choix_champs_#ENV{cle}}|=={cal}|oui)checked="checked"]/>
     18                </td>
     19        ]
     20]
     21</tr>
    2222
    23     [(#ENV{fixvarcal}|!={fix}|oui)
    24     [(#REM) Champs pour les variations de calcul. Par défaut non visible. ]
    25     <tr class="champs_var_#ENV{cle}" style="display:[(#ENV{choix_champs_#ENV{cle}}|=={varier_val_#ENV{cle}}|?{'table-row','none'})];">
    26         <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
    27         <td colspan="2">
    28             <input name="val_min_#ENV{cle}" type="text" value="#ENV{val_min_#ENV{cle}}"/>
    29             [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#ENV{cle}})</div>]
    30         </td>
    31     </tr>
     23[(#ENV{fixvarcal}|!={fix}|oui)
     24        [(#REM) Champs pour les variations de calcul. Par défaut non visible. ]
     25        <tr class="champs_var_#ENV{cle}" style="display:[(#ENV{choix_champs_#ENV{cle}}|=={varier_val_#ENV{cle}}|?{'table-row','none'})];">
     26                <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
     27                <td colspan="2">
     28                        <input name="val_min_#ENV{cle}" type="text" value="#ENV{val_min_#ENV{cle}}"/>
     29                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#ENV{cle}})</div>]
     30                </td>
     31        </tr>
    3232
    33     <tr class="champs_var_#ENV{cle}" style="display:[(#ENV{choix_champs_#ENV{cle}}|=={varier_val_#ENV{cle}}|?{'table-row','none'})];">
    34         <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
    35         <td colspan="2">
    36             <input name="val_max_#ENV{cle}" type="text" value="#ENV{val_max_#ENV{cle}}"/>
    37             [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#ENV{cle}})</div>]
    38         </td>
    39     </tr>
     33        <tr class="champs_var_#ENV{cle}" style="display:[(#ENV{choix_champs_#ENV{cle}}|=={varier_val_#ENV{cle}}|?{'table-row','none'})];">
     34                <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
     35                <td colspan="2">
     36                        <input name="val_max_#ENV{cle}" type="text" value="#ENV{val_max_#ENV{cle}}"/>
     37                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#ENV{cle}})</div>]
     38                </td>
     39        </tr>
    4040
    41     <tr class="champs_var_#ENV{cle}" style="display:[(#ENV{choix_champs_#ENV{cle}}|=={varier_val_#ENV{cle}}|?{'table-row','none'})];">
    42         <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
    43         <td colspan="2">
    44             <input name="pas_var_#ENV{cle}" type="text" value="#ENV{pas_var_#ENV{cle}}"/>
    45             [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#ENV{cle}})</div>]
    46         </td>
    47     </tr>
    48     ]
     41        <tr class="champs_var_#ENV{cle}" style="display:[(#ENV{choix_champs_#ENV{cle}}|=={varier_val_#ENV{cle}}|?{'table-row','none'})];">
     42                <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
     43                <td colspan="2">
     44                        <input name="pas_var_#ENV{cle}" type="text" value="#ENV{pas_var_#ENV{cle}}"/>
     45                        [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#ENV{cle}})</div>]
     46                </td>
     47        </tr>
     48]
  • _plugins_/hydraulic/trunk/hyd_inc/form_cond_distri.class.php

    r96285 r96562  
    44class form_cond_distri extends formulaire {
    55
    6     // Tableau des caractéristiques des champs de saisie
    7     public $saisies = array(
    8         'fs_hydraulique' => array(
    9             'caract_hydraulique',
    10             array(
    11                 'Q' => array('param_Q', 3., 'op'),
    12                 'D' => array('param_D', 1.2, 'op'),
    13                 'J' => array('param_J', 0.6, 'op'),
    14                 'Lg' => array('param_Lg', 100., 'op'),
    15                 'nu' => array('param_nu', 1E-6, 'op')
    16             ),
    17             'cal'
    18         ),
    19         'fs_param_calc' => array(
    20             'param_calcul',
    21             array(
    22                 'rPrec' => array('precision',0.001,'op')
    23             ),
    24             'fix'
    25         )
    26     );
     6        // Tableau des caractéristiques des champs de saisie
     7        public $saisies = array(
     8                'fs_hydraulique' => array(
     9                        'caract_hydraulique',
     10                        array(
     11                                'Q' => array('param_Q', 3., 'op'),
     12                                'D' => array('param_D', 1.2, 'op'),
     13                                'J' => array('param_J', 0.6, 'op'),
     14                                'Lg' => array('param_Lg', 100., 'op'),
     15                                'nu' => array('param_nu', 1E-6, 'op')
     16                        ),
     17                        'cal'
     18                ),
     19                'fs_param_calc' => array(
     20                        'param_calcul',
     21                        array(
     22                                'rPrec' => array('precision',0.001,'op')
     23                        ),
     24                        'fix'
     25                )
     26        );
    2727
    28     // Définition de la variable à calculer par défaut
    29     protected $sVarCal = 'J';
     28        // Définition de la variable à calculer par défaut
     29        protected $sVarCal = 'J';
    3030
    31     // Définition du nombre de colonnes du formulaire
    32     protected $nb_col = 5;
     31        // Définition du nombre de colonnes du formulaire
     32        protected $nb_col = 5;
    3333
    34     protected function calculer() {
    35         // On transforme les champs du tableau des données du formulaire en variables
    36         extract($this->data, EXTR_OVERWRITE|EXTR_REFS);
    37         $tRes = array(); // Tableau des résultats (ordonnées)
    38         $tAbs = array(); // Tableau des abscisses
     34        protected function calculer() {
     35                // On transforme les champs du tableau des données du formulaire en variables
     36                extract($this->data, EXTR_OVERWRITE|EXTR_REFS);
     37                $tRes = array(); // Tableau des résultats (ordonnées)
     38                $tAbs = array(); // Tableau des abscisses
    3939
    40         $K = 0.3164 * pow(4,1.75)/(5.5*9.81*pow(3.1415,1.75)); // Constante de la formule
     40                $K = 0.3164 * pow(4,1.75)/(5.5*9.81*pow(3.1415,1.75)); // Constante de la formule
    4141
    42         for($i = $min; $i <= $max; $i+= $pas){
    43             $tAbs[] = $i;
    44             switch($ValCal){
    45                 case 'Q':
    46                     $tRes[] = pow($J/($K*pow($nu,0.25)*$Lg/pow($D,4.75)),1/1.75);
    47                     break;
    48                 case 'D':
    49                     $tRes[] = pow($J/($K*pow($nu,0.25)*pow($Q,1.75)*$Lg),1/4.75);
    50                     break;
    51                 case 'J':
    52                     $tRes[] = $K*pow($nu,0.25)*pow($Q,1.75)*$Lg/pow($D,4.75);
    53                     break;
    54                 case 'Lg':
    55                     $tRes[] = $J/($K*pow($nu,0.25)*pow($Q,1.75)/pow($D,4.75));
    56                     break;
    57                 case 'nu':
    58                     $tRes[] = pow($J/($K*pow($Q,1.75)*$Lg/pow($D,4.75)),1/0.25);
    59                     break;
    60             }
    61         }
    62         return array('abs'=>$tAbs,'res'=>$tRes);
    63     }
     42                for($i = $min; $i <= $max; $i+= $pas){
     43                        $tAbs[] = $i;
     44                        switch($ValCal){
     45                                case 'Q':
     46                                $tRes[] = pow($J/($K*pow($nu,0.25)*$Lg/pow($D,4.75)),1/1.75);
     47                                break;
     48                                case 'D':
     49                                $tRes[] = pow($J/($K*pow($nu,0.25)*pow($Q,1.75)*$Lg),1/4.75);
     50                                break;
     51                                case 'J':
     52                                $tRes[] = $K*pow($nu,0.25)*pow($Q,1.75)*$Lg/pow($D,4.75);
     53                                break;
     54                                case 'Lg':
     55                                $tRes[] = $J/($K*pow($nu,0.25)*pow($Q,1.75)/pow($D,4.75));
     56                                break;
     57                                case 'nu':
     58                                $tRes[] = pow($J/($K*pow($Q,1.75)*$Lg/pow($D,4.75)),1/0.25);
     59                                break;
     60                        }
     61                }
     62                return array('abs'=>$tAbs,'res'=>$tRes);
     63        }
    6464}
    6565?>
  • _plugins_/hydraulic/trunk/hyd_inc/form_js.html

    r95765 r96562  
    11<script language="javascript">
    2 // Retourne sous forme de tableau tous les élèments de la Class classe et de type tagName
    3 function elementsParClasse(classe, tagName){
    4     var divs = document.getElementsByTagName(tagName);
    5     var resultats = new Array();
    6     for(var i=0; i<divs.length; i++){
    7         if(divs[i].className == classe){
    8             resultats.push(divs[i]);
    9         }
    10     }
    11     return resultats;
    12 }
     2        // Retourne sous forme de tableau tous les élèments de la Class classe et de type tagName
     3        function elementsParClasse(classe, tagName) {
     4                var divs = document.getElementsByTagName(tagName);
     5                var resultats = new Array();
     6                for(var i=0; i<divs.length; i++){
     7                        if(divs[i].className == classe){
     8                                resultats.push(divs[i]);
     9                        }
     10                }
     11                return resultats;
     12        }
    1313
    14 // Tableau contenant tous les choix des groupes de boutons radios
    15 var glob = {};
     14        // Tableau contenant tous les choix des groupes de boutons radios
     15        var glob = {};
    1616
    1717
    18 // Mise a jour des variables globales
    19 function setVarGlob(){
    20     // On récupère le choix effectué parmis les groupes de champs radios.
    21     <BOUCLE_setVarGlob(POUR){tableau #ENV{champs_fvc}}>
    22         //glob['#VALEUR'] = $("input[name=choix_champs_#VALEUR]:checked").val();
    23         glob['#VALEUR'] = getRadioValue('choix_champs_#VALEUR');
    24     </BOUCLE_setVarGlob>
    25 }
     18        // Mise a jour des variables globales
     19        function setVarGlob() {
     20                // On récupère le choix effectué parmis les groupes de champs radios.
     21                <BOUCLE_setVarGlob(POUR){tableau #ENV{champs_fvc}}>
     22                        //glob['#VALEUR'] = $("input[name=choix_champs_#VALEUR]:checked").val();
     23                        glob['#VALEUR'] = getRadioValue('choix_champs_#VALEUR');
     24                </BOUCLE_setVarGlob>
     25        }
    2626
    2727
    28 function gestion_radios(nom,valeur) {
     28        function gestion_radios(nom,valeur) {
    2929
    30     function affichageChamp(nom, valeur) {
    31         var display;
    32         if(valeur=='fix') {
    33             document.getElementById('champ_'+nom).disabled=false;
    34         } else {
    35             document.getElementById('champ_'+nom).disabled=true;
    36         }
    37         if(valeur=='var') {
    38             display = 'table-row';
    39         } else {
    40             display = 'none';
    41         }
    42         var cacher = elementsParClasse('champs_var_'+nom, 'tr');
    43         for(var i in cacher){
    44             cacher[i].style.display=display;
    45         }
    46     }
     30                function affichageChamp(nom, valeur) {
     31                        var display;
     32                        if(valeur=='fix') {
     33                                document.getElementById('champ_'+nom).disabled=false;
     34                        } else {
     35                                document.getElementById('champ_'+nom).disabled=true;
     36                        }
     37                        if(valeur=='var') {
     38                                display = 'table-row';
     39                        } else {
     40                                display = 'none';
     41                        }
     42                        var cacher = elementsParClasse('champs_var_'+nom, 'tr');
     43                        for(var i in cacher){
     44                                cacher[i].style.display=display;
     45                        }
     46                }
    4747
    48     // On gère l'affichage du champ sélectionné
    49     affichageChamp(nom,valeur);
     48                // On gère l'affichage du champ sélectionné
     49                affichageChamp(nom,valeur);
    5050
    51     // Pour var et cal, on bascule en fix l'ancien champ en var ou cal
    52     if(valeur != 'fix') {
    53         for (var cle in glob){
    54             if(glob[cle]==valeur && cle != nom) {
    55                 document.getElementById('fix_'+cle).checked=true;
    56                 affichageChamp(cle,'fix');
    57             }
    58         }
    59     }
     51                // Pour var et cal, on bascule en fix l'ancien champ en var ou cal
     52                if(valeur != 'fix') {
     53                        for (var cle in glob){
     54                                if(glob[cle]==valeur && cle != nom) {
     55                                        document.getElementById('fix_'+cle).checked=true;
     56                                        affichageChamp(cle,'fix');
     57                                }
     58                        }
     59                }
    6060
    61     // Si l'action est sur un ancien cal, on bascule le champ cal par défaut
    62     if(glob[nom]=='cal' && valeur != 'cal') {
    63         document.getElementById('cal_#ENV{sVarCal}').checked=true;
    64         affichageChamp('#ENV{sVarCal}','cal');
    65     }
    66     setVarGlob();
     61                // Si l'action est sur un ancien cal, on bascule le champ cal par défaut
     62                if(glob[nom]=='cal' && valeur != 'cal') {
     63                        document.getElementById('cal_#ENV{sVarCal}').checked=true;
     64                        affichageChamp('#ENV{sVarCal}','cal');
     65                }
     66                setVarGlob();
    6767
    68     // Exécution d'actions complémentaires pour certains formulaires
    69     if(typeof gestion_radios_extra === "function") {
    70         gestion_radios_extra(nom,valeur);
    71     }
    72 }
     68                // Exécution d'actions complémentaires pour certains formulaires
     69                if(typeof gestion_radios_extra === "function") {
     70                        gestion_radios_extra(nom,valeur);
     71                }
     72        }
    7373
    7474</script>
  • _plugins_/hydraulic/trunk/hyd_inc/form_lechapt_calmon.class.php

    r96285 r96562  
    44class form_lechapt_calmon extends formulaire {
    55
    6     // Tableau des caractéristiques des champs de saisie
    7     public $saisies = array(
    8         'fs_materiau' => array(
    9             'type_materiau',
    10             array(
    11                 'typeMateriau' => array('choix_materiau','form_lechapt_calmont_materiau',''),
    12                 'L' =>  array('L',1.863,'fop'),
    13                 'M' =>  array('M',2.,'fop'),
    14                 'N' =>  array('N',5.33,'fop')
    15             ),
    16             'fix'
    17         ),
    18         'fs_hydraulique' => array(
    19             'caract_hydraulique',
    20             array(
    21                 'Q' => array('param_Q', 3., 'fvcop'),
    22                 'D' => array('param_D', 1.2, 'fvcop'),
    23                 'J' => array('param_J', 0.6, 'fvcop'),
    24                 'Lg' => array('param_Lg', 100., 'fvcop')
    25             ),
    26             'cal'
    27         ),
    28         'fs_param_calc' => array(
    29             'param_calcul',
    30             array(
    31                 'rPrec' => array('precision',0.001,'fop')
    32             ),
    33             'fix'
    34         )
    35     );
     6        // Tableau des caractéristiques des champs de saisie
     7        public $saisies = array(
     8                'fs_materiau' => array(
     9                        'type_materiau',
     10                        array(
     11                                'typeMateriau' => array('choix_materiau','form_lechapt_calmont_materiau',''),
     12                                'L' =>  array('L',1.863,'fop'),
     13                                'M' =>  array('M',2.,'fop'),
     14                                'N' =>  array('N',5.33,'fop')
     15                        ),
     16                        'fix'
     17                ),
     18                'fs_hydraulique' => array(
     19                        'caract_hydraulique',
     20                        array(
     21                                'Q' => array('param_Q', 3., 'fvcop'),
     22                                'D' => array('param_D', 1.2, 'fvcop'),
     23                                'J' => array('param_J', 0.6, 'fvcop'),
     24                                'Lg' => array('param_Lg', 100., 'fvcop')
     25                        ),
     26                        'cal'
     27                ),
     28                'fs_param_calc' => array(
     29                        'param_calcul',
     30                        array(
     31                                'rPrec' => array('precision',0.001,'fop')
     32                        ),
     33                        'fix'
     34                )
     35        );
    3636
    37     // Définition de la variable à calculer par défaut
    38     protected $sVarCal = 'Q';
     37        // Définition de la variable à calculer par défaut
     38        protected $sVarCal = 'Q';
    3939
    40     // Définition du nombre de colonnes du formulaire
    41     protected $nb_col = 5;
     40        // Définition du nombre de colonnes du formulaire
     41        protected $nb_col = 5;
    4242
    4343
    44     /*
    45      * Tableau des données pour chaque type de tuyau. Ces valeurs sont associées
    46      * aux numéros des options du select (voir page lechapt_calmon.php)