[Scodoc-devel] Tableau cases à cocher absences

SOUDIERE Dominique dominique.soudiere at univ-lehavre.fr
Ven 22 Mar 08:23:15 CET 2013


Bonjour Emmanuel,

Je ne sais pas si c'est le moment ou pas d'intégrer une modification 
étant donnés les nettoyages de code que tu fais.

j'ai testé mes dernières propositions de modification pour la saisie des 
absences sur cases à cocher.
Finalement j'ai opté pour un sélecteur de 5, 10, 15, 20 50, 100 , all 
lignes de façon à pouvoir faire défiler la liste en gardant le titre des 
colonnes et ce pour toutes dimensions d'écran.
Si on rétrécit la fenêtre sur linux par exemple les ascenseurs 
apparaissent (en horizontal si besoin ou vertical)
   Ça marche bien en linux,mac  windows (sauf Chrome petit défaut).

testé aussi sur simulateur de tablettes et mobiles 
http://quirktools.com/screenfly/ : ça semble visible sur tablettes mais 
plus délicat sur dimension mobile
Nécessité de mettre à l'horizontal et moins confortable.

sur itab ok sauf qu'il faut glisser avec le doigt en horizontal au lieu 
de l'ascenseur.
sur iphone un collègue m'a dit que ça allait.
Je te redonne le code et le svn à jour.
Amitiés.
Dominique

-------------- section suivante --------------
Index: html_sco_header.py
===================================================================
--- html_sco_header.py	(revision 1217)
+++ 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
@@ -94,6 +95,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
+<meta name="viewport" content="width=device-width"/>
 <title>%(page_title)s</title>
 <meta http-equiv="Content-Type" content="text/html; charset=%(encoding)s" />
 <meta http-equiv="Content-Style-Type" content="text/css" />
@@ -127,6 +129,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( { "bPaginate": true, "iDisplayLength": 15, "aLengthMenu": [[5, 10, 15, 20, 50, 100, -1], [5, 10, 15, 20, 50, 100, "All"]],  "oLanguage": {"oPaginate": {"sNext": " Suivant", "sPrevious": "Précédent -"}},"bInfo": false,  "bSort": false, "bFilter":false, "bDeferRender": true, "bLengthChange": true, "bJQueryUI": false,"sScrollX": "100%","sScrollXInner": "1000px","bScrollCollapse": true} );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 1217)
+++ 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 ] ) )

 #
 #   ------------- Capitalisation des UEs -------------
Index: sco_abs_views.py
===================================================================
--- sco_abs_views.py	(revision 1217)
+++ 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: html_sco_header.py
Type: application/python-py
Taille: 9331 octets
Desc: non disponible
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20130322/c92113c1/attachment-0003.bin>
-------------- 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/20130322/c92113c1/attachment-0004.bin>
-------------- 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/20130322/c92113c1/attachment-0005.bin>


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