source: spip-zone/_plugins_/hydraulic/branches/v0.3/formulaires/lechapt_calmon.html @ 60709

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