renforce API jajax
[auf_rh_dae.git] / project / media / js / dae.js
CommitLineData
f87fe1a1
OL
1/* string to float */
2function clean_float(value){
86f1e48d 3 if (isNaN(value) || value == undefined)
f87fe1a1
OL
4 output = 0;
5 else
6 output = parseFloat(value);
7 output = Math.round(output*100)/100;
8 return output;
9}
10
26b327fa 11/* Construction dynamique des valeurs de point en fonction de l'implantation choisie */
f87fe1a1
OL
12function charger_valeurs_point(implantation_id) {
13 var params = {'implantation_id' : implantation_id};
994474ba
OL
14 var chargement_vp = $.getJSON('/dae/liste_valeurs_point', params);
15 chargement_vp.success(function(data) {
16 var items = [];
f87fe1a1 17
994474ba
OL
18 var options = "";
19 $.each(data, function() {
20 options += '<option value="' + this.id + '">' + this.label + '</option>';
21 });
f87fe1a1 22
994474ba
OL
23 $("#id_valeur_point_min").html(options);
24 $("#id_valeur_point_max").html(options);
25 alert("Les valeurs de point on été ajustées en fonction de cette implantation.");
f87fe1a1
OL
26 });
27}
28
26b327fa
OL
29/* Calcul des totaux dans les 2 devises, selon les champs sélectionnés. Cette fonction
30est appelée À chaque modification du formulaire de classement. */
e35f5b95 31function recalculer_ligne(element) {
f87fe1a1 32 var ligne = element.parents("tr");
86f1e48d
OL
33 var inputs = ligne.find("input, select");
34 var salaire_input;
35 var valeur_point_input;
f87fe1a1
OL
36 inputs.each(function() {
37 var input = $(this);
86f1e48d 38 if (input.attr('id').match('id_coefficient*')) {
f87fe1a1 39 coeff = clean_float(input.val())
86f1e48d
OL
40 }
41 if (input.attr('id').match('id_valeur_point*')) {
42 valeur_point_input = input;
43 }
44 if (input.attr('id').match('id_salaire*')) {
45 salaire_input = input;
f87fe1a1 46 salaire = clean_float(input.val())
86f1e48d
OL
47 }
48 if (input.attr('id').match('id_indemn*')) {
f87fe1a1 49 indemn = clean_float(input.val())
86f1e48d
OL
50 }
51 if (input.attr('id').match('id_autre*')) {
f87fe1a1 52 autre = clean_float(input.val())
86f1e48d 53 }
f87fe1a1
OL
54
55 });
56
86f1e48d
OL
57 /* on suggère un salaire de base en fonction du coefficient et de la valeur du point */
58 valeur_point_text = valeur_point_input.find(":selected").text();
be3c51e9
OL
59 if (valeur_point_text == "")
60 valeur_point = 0;
61 else
62 valeur_point = clean_float(valeur_point_text.split(" ")[0]);
63
64 salaire = clean_float(valeur_point * coeff);
65 salaire_input.val(salaire);
86f1e48d 66
f87fe1a1
OL
67 taux_euro = clean_float(ligne.find(".taux").html())
68 total = 0;
69 total = salaire + indemn + autre;
70 total_euro = total * taux_euro;
71
72 ligne.find(".total-devise").text(total.toFixed(2));
73 ligne.find(".total-euro").text(total_euro.toFixed(2));
74
75}
76
e35f5b95
OL
77/* recalcule tout le classement */
78function recalculer_tout() {
79 $("#classement tr *[name*=devise]").each(function() {
80 recalculer_ligne($(this));
81 });
82}
83
f87fe1a1
OL
84$(document).ready(function() {
85
86 /* La fonctionnalité de présélection, est activé uniquement si aucune implantation n'a déjà été
87 sélectionnée.
994474ba 88 Lorsque l'implantation est changée, on ajuste les valeurs de points en fonction de cette sélection */
f87fe1a1 89 var implantation_id = $("#id_implantation").val();
994474ba
OL
90 $("#id_implantation").change(function() {
91 var implantation_id = this.value;
92 charger_valeurs_point(implantation_id);
93 });
f87fe1a1
OL
94
95
96 $('#id_valeur_point_min, #id_valeur_point_max').change(function(e) {
97 var vp_input = $(this);
26b327fa 98 var ligne = vp_input.parents("tr").parent(); // en fait on travaille sur tout le tableau dans ce cas!
f87fe1a1 99
86f1e48d
OL
100 var chargement_devise = $.getJSON("/dae/devise", {'valeur_point': this.value});
101 chargement_devise.success(function(data) {
f87fe1a1
OL
102 var selects = ligne.find("select");
103 selects.each(function() {
104 var s = $(this);
105 if (s.attr('id').match('id_devise*'))
106 s.val(data.devise)
107 ligne.find(".taux").text(data.taux_euro)
108 ligne.find(".devise_code").text(data.devise_code)
109 });
26b327fa
OL
110
111 /* on synchronise les valeurs de points */
112 $('#id_valeur_point_min, #id_valeur_point_max').each(function() {
113 var vp = $(this);
114 if (vp.val() != vp_input.val()) {
115 vp.val(vp_input.val())
116 }
117 });
118
e35f5b95 119 recalculer_ligne(vp_input);
f87fe1a1 120 });
86f1e48d 121 chargement_devise.error(function(data) {
be3c51e9 122 alert(data.responseText);
86f1e48d
OL
123 });
124
f87fe1a1
OL
125 });
126
127 $('#id_devise_min, #id_devise_max').change(function(e) {
128 var input = $(this);
129 var ligne = input.parents("tr");
86f1e48d
OL
130 var chargement_devise = $.getJSON("/dae/devise/code", {'devise': this.value});
131 chargement_devise.success(function(data) {
f87fe1a1
OL
132 ligne.find(".taux").text(data.taux_euro)
133 ligne.find(".devise_code").text(data.devise_code)
e35f5b95 134 recalculer_ligne(input);
86f1e48d
OL
135 });
136 chargement_devise.error(function(data) {
137 alert(data.responseText);
138 ligne.find(".taux").text(0)
139 ligne.find(".devise_code").text("???")
f87fe1a1
OL
140 });
141
142 });
143
144 $('#id_classement_min, #id_classement_max').change(function(e) {
145 var classement = $(this);
146 var ligne = classement.parents("tr");
86f1e48d
OL
147 var chargement_coeff = $.getJSON("/dae/coefficient", {'classement': classement.val()});
148 chargement_coeff.success(function(data){
f87fe1a1
OL
149 var inputs = ligne.find("input");
150 inputs.each(function() {
151 var input = $(this);
152 if (input.attr('id').match('id_coefficient*'))
153 input.val(data.coefficient);
86f1e48d 154 });
e35f5b95 155 recalculer_ligne(classement);
86f1e48d
OL
156 });
157 chargement_coeff.error(function(data){
f87fe1a1 158 });
f87fe1a1
OL
159 });
160
26b327fa 161 /* refresh des totaux à chaque changement quelconque */
86f1e48d 162 $('#classement input, #classement select').change(function() {
e35f5b95 163 recalculer_ligne($(this));
f87fe1a1 164 });
e35f5b95
OL
165
166 /* au chargement, on calcule tout */
167 recalculer_tout();
f87fe1a1
OL
168
169});