classement JS
[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
11function charger_valeurs_point(implantation_id) {
12 var params = {'implantation_id' : implantation_id};
13 $.getJSON('/dae/liste_valeurs_point', params, function(data) {
14 var items = [];
15
16 var options = "";
17 $.each(data, function() {
18 options += '<option value="' + this.id + '">' + this.label + '</option>';
19 });
20
21 $("#id_valeur_point_min").html(options);
22 $("#id_valeur_point_max").html(options);
23 });
24}
25
26function recalculer(element) {
27 var ligne = element.parents("tr");
86f1e48d
OL
28 var inputs = ligne.find("input, select");
29 var salaire_input;
30 var valeur_point_input;
f87fe1a1
OL
31 inputs.each(function() {
32 var input = $(this);
86f1e48d 33 if (input.attr('id').match('id_coefficient*')) {
f87fe1a1 34 coeff = clean_float(input.val())
86f1e48d
OL
35 }
36 if (input.attr('id').match('id_valeur_point*')) {
37 valeur_point_input = input;
38 }
39 if (input.attr('id').match('id_salaire*')) {
40 salaire_input = input;
f87fe1a1 41 salaire = clean_float(input.val())
86f1e48d
OL
42 }
43 if (input.attr('id').match('id_indemn*')) {
f87fe1a1 44 indemn = clean_float(input.val())
86f1e48d
OL
45 }
46 if (input.attr('id').match('id_autre*')) {
f87fe1a1 47 autre = clean_float(input.val())
86f1e48d 48 }
f87fe1a1
OL
49
50 });
51
86f1e48d
OL
52 /* on suggère un salaire de base en fonction du coefficient et de la valeur du point */
53 valeur_point_text = valeur_point_input.find(":selected").text();
54 valeur_point = clean_float(valeur_point_text.split(" ")[0]);
55 if (valeur_point > 0 && coeff > 0) {
56 salaire = clean_float(valeur_point * coeff);
57 salaire_input.val(salaire);
58 }
59
f87fe1a1
OL
60 taux_euro = clean_float(ligne.find(".taux").html())
61 total = 0;
62 total = salaire + indemn + autre;
63 total_euro = total * taux_euro;
64
65 ligne.find(".total-devise").text(total.toFixed(2));
66 ligne.find(".total-euro").text(total_euro.toFixed(2));
67
68}
69
70$(document).ready(function() {
71
72 /* La fonctionnalité de présélection, est activé uniquement si aucune implantation n'a déjà été
73 sélectionnée.
74 Lorsque l'implantation est changée, on ajuste les valeurs de points en fonction de cette
75 sélection, UNIQUEMENT si aucune valeur n'est encore définie. */
76 var implantation_id = $("#id_implantation").val();
77 if (implantation_id == "") {
78
79 $("#id_implantation").change(function() {
80 var implantation_id = this.value;
81 charger_valeurs_point(implantation_id);
82 });
83 }
84
85
86 $('#id_valeur_point_min, #id_valeur_point_max').change(function(e) {
87 var vp_input = $(this);
88 var ligne = vp_input.parents("tr");
89
86f1e48d
OL
90 var chargement_devise = $.getJSON("/dae/devise", {'valeur_point': this.value});
91 chargement_devise.success(function(data) {
f87fe1a1
OL
92 var selects = ligne.find("select");
93 selects.each(function() {
94 var s = $(this);
95 if (s.attr('id').match('id_devise*'))
96 s.val(data.devise)
97 ligne.find(".taux").text(data.taux_euro)
98 ligne.find(".devise_code").text(data.devise_code)
99 });
86f1e48d 100 recalculer(vp_input);
f87fe1a1 101 });
86f1e48d
OL
102 chargement_devise.error(function(data) {
103 });
104
f87fe1a1
OL
105 });
106
107 $('#id_devise_min, #id_devise_max').change(function(e) {
108 var input = $(this);
109 var ligne = input.parents("tr");
86f1e48d
OL
110 var chargement_devise = $.getJSON("/dae/devise/code", {'devise': this.value});
111 chargement_devise.success(function(data) {
f87fe1a1
OL
112 ligne.find(".taux").text(data.taux_euro)
113 ligne.find(".devise_code").text(data.devise_code)
86f1e48d
OL
114 recalculer(input);
115 });
116 chargement_devise.error(function(data) {
117 alert(data.responseText);
118 ligne.find(".taux").text(0)
119 ligne.find(".devise_code").text("???")
f87fe1a1
OL
120 });
121
122 });
123
124 $('#id_classement_min, #id_classement_max').change(function(e) {
125 var classement = $(this);
126 var ligne = classement.parents("tr");
86f1e48d
OL
127 var chargement_coeff = $.getJSON("/dae/coefficient", {'classement': classement.val()});
128 chargement_coeff.success(function(data){
f87fe1a1
OL
129 var inputs = ligne.find("input");
130 inputs.each(function() {
131 var input = $(this);
132 if (input.attr('id').match('id_coefficient*'))
133 input.val(data.coefficient);
86f1e48d
OL
134 });
135 recalculer(classement);
136 });
137 chargement_coeff.error(function(data){
f87fe1a1 138 });
f87fe1a1
OL
139 });
140
141
86f1e48d 142 $('#classement input, #classement select').change(function() {
f87fe1a1
OL
143 recalculer($(this));
144 });
145
146});