filtrage JS implantation, famille
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 19 Apr 2011 20:52:30 +0000 (16:52 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 19 Apr 2011 20:52:30 +0000 (16:52 -0400)
project/dae/forms.py
project/dae/templates/dae/poste.html
project/dae/views.py
project/media/js/dae-poste.js

index 543f384..2b667dd 100644 (file)
@@ -9,6 +9,10 @@ from datamaster_modeles import models as ref
 from dae import models as dae
 from rh_v1 import models as rh
 
+def label_poste_display(poste):
+    """Formate un visuel pour un poste dans une liste déroulante"""
+    label = u"%s - %s [%s]" %(poste.type_poste, poste.type_poste.famille_emploi.nom, poste.id)
+    return label
 
 class PostePieceForm(inlineformset_factory(dae.Poste, dae.PostePiece)):
     pass
@@ -155,8 +159,8 @@ class PosteForm(WorkflowFormMixin):
         rhv1 = rhv1.select_related(depth=1)
 
         return [('', 'Nouveau poste')] + \
-               sorted([('dae-%s' % p.id, unicode(p)) for p in dae_ | copies] +
-                      [('rh-%s' % p.id, unicode(p)) for p in rhv1],
+               sorted([('dae-%s' % p.id, label_poste_display(p)) for p in dae_ | copies] +
+                      [('rh-%s' % p.id, label_poste_display(p)) for p in rhv1],
                       key=lambda t: t[1])
 
     def clean(self):
index f7ca38d..4c2908c 100644 (file)
@@ -61,7 +61,7 @@ Demande d'autorisation d'embauche
         </tr>
         <tr>
             <th>{{ form.poste.label_tag }} :<br />{{ form.poste.errors }}</th>
-            <td>{{ form.poste }}</td>
+            <td>{{ form.poste }} <span class="info">Au changement de ce menu, la page va être rechargée.</span></td>
         </tr>
         <tr>
             <th>{{ form.nom.label_tag }} :<br />{{ form.nom.errors }}</th>
index 6544926..7b3c514 100644 (file)
@@ -476,10 +476,8 @@ def liste_postes(request):
     id_copies = [p.id_rh_id for p in copies.all()]
     rhv1 = rh_postes_actifs.exclude(id__in=id_copies)
     rhv1 = rhv1.select_related(depth=1)
-    data = [('', 'Nouveau poste')] + \
-           sorted([('dae-%s' % p.id, unicode(p)) for p in dae_ | copies] +
-                  [('rh-%s' % p.id, unicode(p)) for p in rhv1],
-                  key=lambda t: t[1])
+
+    data = [('', 'Nouveau poste')] +  sorted([('dae-%s' % p.id, label_poste_display(p)) for p in dae_ | copies] + [('rh-%s' % p.id, label_poste_display(p)) for p in rhv1], key=lambda t: t[1])
     return HttpResponse(dumps(data))
 
 def devise(request):
index 31b4179..320f508 100644 (file)
@@ -4,6 +4,7 @@
 
 /*  filter les postes en fonction de l'implantation choisie */
 function charger_postes(implantation_id) {
+    var selected = $("#id_poste :selected").val();
     var params = {'implantation_id' : implantation_id};
     var chargement_p = $.getJSON('/dae/liste_postes', params);
     chargement_p.success(function(data) {
@@ -11,7 +12,10 @@ function charger_postes(implantation_id) {
 
         var options = "";
         $.each(data, function(index) {
-            options += '<option value="' + data[index][0] + '">' + data[index][1] + '</option>';
+            select = "";
+            if (data[index][0] == selected)
+                select = " selected=selected ";
+            options += '<option ' + select + ' value="' + data[index][0] + '">' + data[index][1] + '</option>';
         });
 
         $("#id_poste").html(options);
@@ -32,7 +36,7 @@ function charger_valeurs_point(implantation_id) {
 
         $("#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.");
+        alert("Les valeurs de point et les postes ont été ajustés en fonction de cette implantation.");
     });
 }
 
@@ -93,6 +97,12 @@ function recalculer_tout() {
 
 $(document).ready(function() {
 
+    /* Lorsqu'on choisit un poste dans la liste on recharge la page avec le
+    poste chargé dans la view (grâce à son id dans l'URL).*/
+    $('#id_poste').change(function() {
+        window.location = '/dae/poste/' + $(this).val();
+    });
+
     /* 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 */
@@ -182,5 +192,8 @@ $(document).ready(function() {
         contrat_mois();
     });
     contrat_mois();
+    
+    /* on charge les postes reliés à cette implantation */
+    charger_postes($("#id_implantation :selected").val());
 
 });