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

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