[Scodoc-devel] Tableau saisie absences

SOUDIERE Dominique dominique.soudiere at univ-lehavre.fr
Dim 17 Mar 10:03:32 CET 2013


Bonjour,

je propose cette modification.
J'espère que ma version du svn est conforme cette fois (j'ai retiré ce 
qui ne concernait pas les autres utilisateurs que Le Havre.
J'ai mis à jour la version juste avant (version 1210)

Le tableau de saisie des absences par cases à cocher est ainsi mieux 
géré pour les longues listes,  avec des ascenseurs suivant taille écran 
ou défilement à la roulette de la souris.
J'ai testé sur Iceweasel debian, sur Explorer windows =7 et sur Firefox 
windows 7.
Sur Chrome ça semble ne pas marcher quand tableaux trop larges (montrer 
toutes les semaines avec beaucoup de semaines) mais verticalement oui.

Procédure: mettre jquery.dataTables.js et FixedColumns.js dans 
static/jQuery.

J'ai également profité de corriger la faute de frappe du calendrier.
Amicalement.
Dominique
-------------- section suivante --------------
Index: html_sco_header.py
===================================================================
--- html_sco_header.py	(revision 1210)
+++ html_sco_header.py	(working copy)
@@ -37,6 +37,7 @@
                container=None,     # objet qui a lancé la demande
                page_title='',      # page title
                no_side_bar=False,  # hide sidebar
+               fixedcolumns=False,  # fixe header and first column (avec id="Mytable")
                cssstyles=[],       # additionals CSS sheets
                javascripts=[],     # additionals JS filenames to load
                scripts=[],         # script to put in page header
@@ -127,6 +128,12 @@
     if init_jquery_ui:
         H.append('<script language="javascript" type="text/javascript" src="/ScoDoc/static/libjs/jquery-ui/js/jquery-ui-1.7.2.custom.min.js"></script>')
         H.append('<script language="javascript" type="text/javascript" src="/ScoDoc/static/libjs/jquery-ui/js/jquery-ui-i18n.js"></script>')
+    if fixedcolumns:
+        H.append('<script language="javascript" type="text/javascript" src="/ScoDoc/static/jQuery/jquery.js"></script> ')
+	H.append('<script language="javascript" type="text/javascript" src="/ScoDoc/static/jQuery/jquery.dataTables.js"></script>') 
+        H.append('<script language="javascript" type="text/javascript" src="/ScoDoc/static/jQuery/FixedColumns.js"></script>')
+	H.append('<script type="text/javascript" charset="utf-8">$(document).ready( function () {			var oTable = $("#Mytable").dataTable( { "bInfo": false,  "bSort": false, "bFilter":false, "bJQueryUI": true,"sScrollY": "350px","sScrollX": "100%","sScrollXInner": "100%","bScrollCollapse": true,"bPaginate": false} );new FixedColumns( oTable ,{"iLeftWidth": 250}); } );</script>')
+	H.append('<style>table {table-layout:fixed; width: 100%;}</style>')
     if init_google_maps:
         H.append('<script type="text/javascript" src="/ScoDoc/static/libjs/jquery.ui.map.full.min.js"></script>')
     # JS additionels
Index: ZAbsences.py
===================================================================
--- ZAbsences.py	(revision 1210)
+++ ZAbsences.py	(working copy)
@@ -865,6 +865,7 @@
         
         H = [ self.sco_header(page_title='Saisie hebdomadaire des absences',
                               init_jquery_ui=True,
+			      fixedcolumns=True,
                               javascripts=['libjs/qtip/jquery.qtip.js',
                                            'js/etud_info.js',
                                            'js/abs_ajax.js'
@@ -982,15 +983,18 @@
         
         H = [ self.sco_header(page_title='Saisie des absences',
                               init_jquery_ui=True,
+			      fixedcolumns=True,
                               javascripts=['libjs/qtip/jquery.qtip.js',
                                            'js/etud_info.js',
                                            'js/abs_ajax.js'
                                            ],
                               no_side_bar=1, REQUEST=REQUEST),
-              """<table border="0" cellspacing="16"><tr><td>
+              """
+
+<table border="0" cellspacing="16"><tr><td>
               <h2>Saisie des absences %s %s, 
               les <span class="fontred">%s</span></h2>
-              <p>
+              
               <a href="%s">%s</a>
               <form action="doSignaleAbsenceGrSemestre" method="post">              
               """ % (gr_tit, sem['titre_num'], dayname, url_link_semaines, msg) ]
@@ -1026,12 +1030,12 @@
                 sel = ''
             else:
                 sel = 'selected' # aucun module specifie
-            H.append("""<p>
-    Module concerné par ces absences (optionnel): <select id="moduleimpl_id" name="moduleimpl_id" onchange="document.location='%(url)s&moduleimpl_id='+document.getElementById('moduleimpl_id').value">
+            H.append("""
+    Module concerné par ces absences: <select id="moduleimpl_id" name="moduleimpl_id" onchange="document.location='%(url)s&moduleimpl_id='+document.getElementById('moduleimpl_id').value">
     <option value="" %(sel)s>non spécifié</option>
     %(menu_module)s
     </select>
-</p>""" % {'menu_module': menu_module, 'url' : base_url, 'sel':sel })
+""" % {'menu_module': menu_module, 'url' : base_url, 'sel':sel })
 
         H += self._gen_form_saisie_groupe(etuds, colnames, dates, destination, dayname, moduleimpl_id)
         H.append(self.sco_footer(REQUEST))
@@ -1058,8 +1062,10 @@
         </script>
         <div id="AjaxDiv"></div>
         <br/>
-        <table rules="cols" frame="box">
+
+        <table frame="box" rules="cols"  cellpadding="0" cellspacing="0" border="0" id="Mytable"><thead >
         <tr><td> </td>
+	
         """]
         # Titres colonnes
         if dayname:
@@ -1072,7 +1078,7 @@
 
         H.append('</tr><tr><td> </td>')
         H.append('<th>AM</th><th>PM</th>' * len(colnames) )
-        H.append('</tr>')
+        H.append('</thead><tbody >')
         #
         if not etuds:
             H.append('<tr><td><span class="redboldtext">Aucun étudiant inscrit !</span></td></tr>')
@@ -1103,17 +1109,17 @@
                     checked = 'checked'
                 else:
                     checked = ''
-                H.append('<td %s><input type="checkbox" name="abslist:list" value="%s" %s onclick="on_toggled(this, \'%s\', \'%s\')"/></td>'
+                H.append('<td %s><center><input type="checkbox" name="abslist:list" value="%s" %s onclick="on_toggled(this, \'%s\', \'%s\')"/><center></td>'
                          % (matin_bgcolor, etudid+':'+date+':'+'am', checked, etudid, date+':am'))
                 # apres midi
                 if self.CountAbs( etudid, date, date, False, moduleimpl_id=moduleimpl_id):
                     checked = 'checked'
                 else:
                     checked = ''
-                H.append('<td><input type="checkbox" name="abslist:list" value="%s" %s onclick="on_toggled(this, \'%s\', \'%s\')"/></td>'
+                H.append('<td><center><input type="checkbox" name="abslist:list" value="%s" %s onclick="on_toggled(this, \'%s\', \'%s\')"/></center></td>'
                          % (etudid+':'+date+':'+'pm', checked, etudid, date+':pm'))
             H.append('</tr>')
-        H.append('</table>')
+        H.append('</tbody></table>')
         # place la liste des etudiants et les dates pour pouvoir effacer les absences
         H.append('<input type="hidden" name="etudids" value="%s"/>'
                  % ','.join( [ etud['etudid'] for etud in etuds ] ) )

Index: sco_abs_views.py
===================================================================
--- sco_abs_views.py	(revision 1210)
+++ sco_abs_views.py	(working copy)
@@ -466,7 +466,7 @@
           """<table><tr><td><h2>Absences de <b>%(nomprenom)s (%(inscription)s)</h2><p>""" % etud,
           """<font color="#EE0000">A : absence NON justifiée</font><br>
              <font color="#F8B7B0">a : absence justifiée</font><br>
-	     <font color="#8EA2C6">X : justifification sans absence</font><br>
+	     <font color="#8EA2C6">X : justification sans absence</font><br>
              %d absences sur l'année, dont %d justifiées (soit %d non justifiées)
            """  % (nbabs, nbabsjust, nbabs-nbabsjust),
            """</td>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: ZAbsences.py
Type: application/python-py
Taille: 87823 octets
Desc: non disponible
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20130317/d8b5f580/attachment-0003.bin>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: html_sco_header.py
Type: application/python-py
Taille: 9069 octets
Desc: non disponible
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20130317/d8b5f580/attachment-0004.bin>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: jquery.dataTables.js
Type: application/x-javascript
Taille: 377508 octets
Desc: non disponible
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20130317/d8b5f580/attachment-0002.js>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: FixedColumns.js
Type: application/x-javascript
Taille: 34591 octets
Desc: non disponible
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20130317/d8b5f580/attachment-0003.js>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: sco_abs_views.py
Type: application/python-py
Taille: 22235 octets
Desc: non disponible
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20130317/d8b5f580/attachment-0005.bin>


Plus d'informations sur la liste de diffusion Scodoc-devel