UI filter
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 27 Mar 2012 16:22:55 +0000 (12:22 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 27 Mar 2012 16:22:55 +0000 (12:22 -0400)
project/rh/templates/admin/rh/annee_select.html
project/rh/templates/admin/rh/annee_select.js [new file with mode: 0644]
project/rh/templates/rh/rapports/masse_salariale.html
project/rh/views.py

index 8c5472d..3f1d851 100644 (file)
@@ -1,37 +1,7 @@
 {{ form.media }}
 
-<script type="text/javascript">
-  $(document).ready(function(){
-    function updateQueryStringParameter(a, k, v) {
-      var re = new RegExp("([?|&])" + k + "=.*?(&|$)", "i"),
-        separator = a.indexOf('?') !== -1 ? "&" : "?";
+{% include "admin/rh/annee_select.js" %}
 
-      if (a.match(re)) return a.replace(re, '$1' + k + "=" + v + '$2');
-      else return a + separator + k + "=" + v;
-    }
-    $("#plage_date_rechercher").click(function(e){
-      e.preventDefault();
-      uri = window.location.search;
-      if($("#id_date_fin").val()) 
-        uri = updateQueryStringParameter(uri, 'date_fin', $("#id_date_fin").val());
-      if($("#id_date_debut").val()) 
-        uri = updateQueryStringParameter(uri, 'date_debut', $("#id_date_debut").val());
-      window.location = window.location.pathname+uri;
-    });
-    $("#id_date_fin").keypress(function(e){
-      if(e.keyCode == 13) {
-        e.preventDefault();
-        $("#plage_date_rechercher").trigger("click");
-      }
-    });
-    $("#id_date_debut").keypress(function(e){
-      if(e.keyCode == 13) {
-        e.preventDefault();
-        $("#plage_date_rechercher").trigger("click");
-      }
-    });
-  });
-</script>
 <div class="actions">
   <label>Statut :
     {{ form.statut }}
diff --git a/project/rh/templates/admin/rh/annee_select.js b/project/rh/templates/admin/rh/annee_select.js
new file mode 100644 (file)
index 0000000..22394d6
--- /dev/null
@@ -0,0 +1,32 @@
+<script type="text/javascript">
+  $(document).ready(function(){
+    function updateQueryStringParameter(a, k, v) {
+      var re = new RegExp("([?|&])" + k + "=.*?(&|$)", "i"),
+        separator = a.indexOf('?') !== -1 ? "&" : "?";
+
+      if (a.match(re)) return a.replace(re, '$1' + k + "=" + v + '$2');
+      else return a + separator + k + "=" + v;
+    }
+    $("#plage_date_rechercher").click(function(e){
+      e.preventDefault();
+      uri = window.location.search;
+      if($("#id_date_fin").val()) 
+        uri = updateQueryStringParameter(uri, 'date_fin', $("#id_date_fin").val());
+      if($("#id_date_debut").val()) 
+        uri = updateQueryStringParameter(uri, 'date_debut', $("#id_date_debut").val());
+      window.location = window.location.pathname+uri;
+    });
+    $("#id_date_fin").keypress(function(e){
+      if(e.keyCode == 13) {
+        e.preventDefault();
+        $("#plage_date_rechercher").trigger("click");
+      }
+    });
+    $("#id_date_debut").keypress(function(e){
+      if(e.keyCode == 13) {
+        e.preventDefault();
+        $("#plage_date_rechercher").trigger("click");
+      }
+    });
+  });
+</script>
index 737b41f..e3f9e6b 100644 (file)
@@ -1,23 +1,40 @@
 {% extends 'rh/rapports/base.html' %}
 {% load adminmedia rapports i18n %}
 
-{% block nomrapport %}Rapport Postes{% endblock %}
-{% block count_elements %}<h2>{{ count }} postes</h2>{% endblock %}
+{% block nomrapport %}Rapport de masse salariale{% endblock %}
+{% block count_elements %}<h2>Rapport du {{ request.GET.date_debut }} au {{ request.GET.date_fin }}</h2>{% endblock %}
 
 {% block extrastyle %}
 {{ block.super }}
 <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-1.5.1.min.js"></script>
 <script type="text/javascript" src="{% admin_media_prefix %}js/jquery-stickytableheaders.js"></script>
+
+{% comment %} datepicker dates selections {% endcomment %}
+<script type="text/javascript" src="/admin/jsi18n"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}/admin/js/core.js"></script>
+{{ form.media }}
+{% include "admin/rh/annee_select.js" %}
+<style>
+    #changelist .actions .filter {width: auto; float: left;}
+    #changelist .actions .filter h3 {font-size: 11px; margin-left: 0.5em;}
+</style>
 {% endblock %}
 
 {% block contentrapport %}
-{% comment %}
-<div id="changelist-filter">
-<h2>{% trans 'Filter' %}</h2>
-{% filter_region "dossier__poste__" %}
-{% filter_implantation "dossier__poste__" %}
+
+<div class="actions">
+
+    <div class="filter">{% filter_region "dossier__poste__" %}</div>
+    <div class="filter">{% filter_implantation "dossier__poste__" %}</div>
+    <div class="clear"></div>
+  <label>Plage de dates:
+    {{ form.date_debut }} au {{ form.date_fin }}
+  </label>
+  <a href="{{ request.url }}?{{ query_string }}" id="plage_date_rechercher" class="button">Rechercher</a>
 </div>
-{% endcomment %}
+<div class="clear"></div>
+
+
 <script type="text/javascript">
     jQuery(document).ready(function(){
         $("#result_list").stickyTableHeaders();
index 1ba75f7..14154a2 100644 (file)
@@ -1,5 +1,6 @@
 # -*- encoding: utf-8 -*-
 
+import urllib
 from datetime import date
 from itertools import izip
 
@@ -7,11 +8,13 @@ import pygraphviz as pgv
 
 from django.core.urlresolvers import reverse
 from django.db.models import Q
-from django.contrib.auth.decorators import login_required
 from django.utils.encoding import smart_str
 from django.shortcuts import render_to_response, get_object_or_404
 from django.template import RequestContext
 from django.http import HttpResponse
+from django import forms
+from django.contrib.auth.decorators import login_required
+from django.contrib.admin import widgets as adminwidgets
 
 from datamaster_modeles import models as ref
 
@@ -198,6 +201,16 @@ def rapports_contrat(request):
 @drh_or_admin_required
 def rapports_masse_salariale(request):
 
+    class RechercheTemporelle(forms.Form):
+        date_debut = forms.DateField(widget=adminwidgets.AdminDateWidget)
+        date_fin = forms.DateField(widget=adminwidgets.AdminDateWidget)
+
+
+    form = RechercheTemporelle(request.GET)
+    get_filtre = [(k, v) for k,v in request.GET.items() \
+            if k not in ('date_debut', 'date_fin', 'implantation', )]
+    query_string = urllib.urlencode(get_filtre)
+
     date_debut = request.GET.get("date_debut", None)
     date_fin = request.GET.get("date_fin", None)
 
@@ -211,7 +224,10 @@ def rapports_masse_salariale(request):
         custom_filter['dossier__poste__implantation__region'] = region
 
     c = {
+            'title': 'Rapport de masse salariale',
+            'form': form,
             'headers': [],
+            'query_string': query_string,
     }
     if date_debut or date_fin:
         masse = MasseSalariale(date_debut, date_fin, custom_filter,