renforce API jajax
[auf_rh_dae.git] / project / media / js / dae.js
index 91a260d..9528e47 100644 (file)
@@ -11,22 +11,24 @@ function clean_float(value){
 /* Construction dynamique des valeurs de point en fonction de l'implantation choisie */
 function charger_valeurs_point(implantation_id) {
     var params = {'implantation_id' : implantation_id};
-    $.getJSON('/dae/liste_valeurs_point', params, function(data) {
-    var items = [];
+    var chargement_vp = $.getJSON('/dae/liste_valeurs_point', params);
+    chargement_vp.success(function(data) {
+        var items = [];
 
-    var options = "";
-    $.each(data, function() {
-        options += '<option value="' + this.id + '">' + this.label + '</option>';
-    });
+        var options = "";
+        $.each(data, function() {
+            options += '<option value="' + this.id + '">' + this.label + '</option>';
+        });
 
-    $("#id_valeur_point_min").html(options);
-    $("#id_valeur_point_max").html(options);
+        $("#id_valeur_point_min").html(options);
+        $("#id_valeur_point_max").html(options);
+        alert("Les valeurs de point on été ajustées en fonction de cette implantation.");
     });
 }
 
 /* Calcul des totaux dans les 2 devises, selon les champs sélectionnés. Cette fonction
 est appelée À chaque modification du formulaire de classement. */
-function recalculer(element) {
+function recalculer_ligne(element) {
     var ligne = element.parents("tr");
     var inputs = ligne.find("input, select");
     var salaire_input;
@@ -54,11 +56,13 @@ function recalculer(element) {
 
     /* on suggère un salaire de base en fonction du coefficient et de la valeur du point */
     valeur_point_text = valeur_point_input.find(":selected").text();
-    valeur_point = clean_float(valeur_point_text.split(" ")[0]);
-    if (valeur_point > 0 && coeff > 0) {
-        salaire = clean_float(valeur_point * coeff);
-        salaire_input.val(salaire);
-    }
+    if (valeur_point_text == "")
+        valeur_point = 0;
+    else
+        valeur_point = clean_float(valeur_point_text.split(" ")[0]);
+
+    salaire = clean_float(valeur_point * coeff);
+    salaire_input.val(salaire);
 
     taux_euro = clean_float(ligne.find(".taux").html())
     total = 0;
@@ -70,20 +74,23 @@ function recalculer(element) {
 
 }
 
+/* recalcule tout le classement */
+function recalculer_tout() {
+    $("#classement tr *[name*=devise]").each(function() {
+        recalculer_ligne($(this));
+    });
+}
+
 $(document).ready(function() {
 
     /* La fonctionnalité de présélection, est activé uniquement si aucune implantation n'a déjà été
     sélectionnée.
-    Lorsque l'implantation est changée, on ajuste les valeurs de points en fonction de cette
-    sélection, UNIQUEMENT si aucune valeur n'est encore définie. */
+    Lorsque l'implantation est changée, on ajuste les valeurs de points en fonction de cette sélection */
     var implantation_id = $("#id_implantation").val();
-    if (implantation_id == "") {
-    
-        $("#id_implantation").change(function() {
-            var implantation_id = this.value;
-            charger_valeurs_point(implantation_id);
-        });
-    }
+    $("#id_implantation").change(function() {
+        var implantation_id = this.value;
+        charger_valeurs_point(implantation_id);
+    });
 
 
     $('#id_valeur_point_min, #id_valeur_point_max').change(function(e) {
@@ -109,9 +116,10 @@ $(document).ready(function() {
                 }
             });
 
-            recalculer(vp_input);
+            recalculer_ligne(vp_input);
         });
         chargement_devise.error(function(data) {
+            alert(data.responseText);
         });
         
     });
@@ -123,7 +131,7 @@ $(document).ready(function() {
         chargement_devise.success(function(data) {
             ligne.find(".taux").text(data.taux_euro)
             ligne.find(".devise_code").text(data.devise_code)
-            recalculer(input);
+            recalculer_ligne(input);
         });
         chargement_devise.error(function(data) {
             alert(data.responseText);
@@ -144,7 +152,7 @@ $(document).ready(function() {
                 if (input.attr('id').match('id_coefficient*'))
                     input.val(data.coefficient);
             });
-            recalculer(classement);
+            recalculer_ligne(classement);
         });
         chargement_coeff.error(function(data){
         });
@@ -152,7 +160,10 @@ $(document).ready(function() {
 
     /* refresh des totaux à chaque changement quelconque */
     $('#classement input, #classement select').change(function() {
-        recalculer($(this));
+        recalculer_ligne($(this));
     });
+    
+    /* au chargement, on calcule tout */
+    recalculer_tout();
 
 });