From 2f2d98954c1df7e0ed9365c8894ee4dde1d5e6d9 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Wed, 20 Mar 2024 18:13:19 +0100 Subject: [PATCH] Maquette: introduit scobox, reprend certaines pages. WIP --- app/models/events.py | 9 +- app/scodoc/html_sco_header.py | 5 +- app/scodoc/sco_dept.py | 70 ++++++++----- app/scodoc/sco_formsemestre_status.py | 22 ++--- app/scodoc/sco_formsemestre_validation.py | 9 +- app/scodoc/sco_utils.py | 2 +- app/static/css/assiduites.css | 9 +- app/static/css/scodoc.css | 99 +++++++++++++------ .../assiduites/pages/ajout_assiduite_etud.j2 | 4 +- .../pages/ajout_justificatif_etud.j2 | 4 +- app/templates/assiduites/pages/bilan_dept.j2 | 40 +++++--- app/templates/assiduites/pages/bilan_etud.j2 | 25 +++-- app/templates/assiduites/widgets/tableau.j2 | 10 +- app/templates/sco_page.j2 | 8 +- 14 files changed, 190 insertions(+), 126 deletions(-) diff --git a/app/models/events.py b/app/models/events.py index fc9fbde0c..4e3fcb2bd 100644 --- a/app/models/events.py +++ b/app/models/events.py @@ -250,10 +250,10 @@ class ScolarNews(db.Model): if not news_list: return "" H = [ - f"""
    """ ] for news in news_list: @@ -266,8 +266,9 @@ class ScolarNews(db.Model): # Informations générales H.append( - f"""
    - Pour en savoir plus sur ScoDoc voir le site scodoc.org. + f"""
    + Pour en savoir plus sur ScoDoc voir le site + scodoc.org.
    """ ) diff --git a/app/scodoc/html_sco_header.py b/app/scodoc/html_sco_header.py index b76a8e77d..0de360d10 100644 --- a/app/scodoc/html_sco_header.py +++ b/app/scodoc/html_sco_header.py @@ -303,13 +303,16 @@ def sco_header( # div pour affichage messages temporaires H.append('
    ') # + H.append('
    ') return "".join(H) def sco_footer(): """Main HTMl pages footer""" return ( - """
    """ + scu.CUSTOM_HTML_FOOTER + """""" + """
""" + + scu.CUSTOM_HTML_FOOTER + + """""" ) diff --git a/app/scodoc/sco_dept.py b/app/scodoc/sco_dept.py index a2edbd946..2196ab8ec 100644 --- a/app/scodoc/sco_dept.py +++ b/app/scodoc/sco_dept.py @@ -57,7 +57,7 @@ def index_html(showcodes=0, showsemtable=0): H.append(ScolarNews.scolar_news_summary_html()) # Avertissement de mise à jour: - H.append("""
""") + H.append("""
""") # Liste de toutes les sessions: sems = sco_formsemestre.do_formsemestre_list() @@ -106,33 +106,39 @@ def index_html(showcodes=0, showsemtable=0): """ ) + H.append("""
""") # Liste des formsemestres "courants" if cursems: - H.append('

Sessions en cours

') - H.append(_sem_table(cursems)) + H.append( + f""" +
Sessions en cours
+ { _sem_table(cursems) } + """ + ) else: # aucun semestre courant: affiche aide H.append( - """

Aucune session en cours !

+ """ +
Aucune session en cours !

Pour ajouter une session, aller dans Formations, choisissez une formation, puis suivez le lien "UE, modules, semestres". -

- Là, en bas de page, suivez le lien +

+

Là, en bas de page, suivez le lien "Mettre en place un nouveau semestre de formation..."

""" ) if showsemtable: H.append( - f"""
-

Semestres de {sco_preferences.get_preference("DeptName")}

+ f""" +
Semestres de {sco_preferences.get_preference("DeptName")}
""" ) H.append(_sem_table_gt(sems, showcodes=showcodes).html()) H.append("") - if not showsemtable: + else: H.append( - f"""
+ f"""

Voir table des semestres (dont {len(othersems)} @@ -141,18 +147,20 @@ def index_html(showcodes=0, showsemtable=0): ) H.append( - f"""

+ f"""

Chercher étape courante: -

""" +
+ """ ) # H.append( - """
-

Gestion des étudiants

- ") # if current_user.has_permission(Permission.EditApogee): H.append( - f"""
-

Exports Apogée

-
+ f""" +
+
Exports Apogée
+ +
""" ) # H.append( - """
-

Assistance

+ """ +
+
Assistance
+
""" ) # diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py index 1277df533..f17669e7b 100755 --- a/app/scodoc/sco_formsemestre_status.py +++ b/app/scodoc/sco_formsemestre_status.py @@ -798,7 +798,7 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str: 'Tous les étudiants'}
{ - "Gestion de l'assiduité" if not partition_is_empty else "" + "Assiduité" if not partition_is_empty else "" }
""" ) @@ -824,14 +824,14 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str:
- - + Bilan
""" ) @@ -839,42 +839,42 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str: H.append( f"""
- - + Visualiser
- - + Saisie journalière
- - + Saisie différée
- - + Justificatifs en attente
""" ) diff --git a/app/scodoc/sco_formsemestre_validation.py b/app/scodoc/sco_formsemestre_validation.py index 27d99fffd..4a5f34b4e 100644 --- a/app/scodoc/sco_formsemestre_validation.py +++ b/app/scodoc/sco_formsemestre_validation.py @@ -1210,7 +1210,9 @@ def formsemestre_validate_previous_ue(formsemestre: FormSemestre, etud: Identite

Utiliser cette page pour enregistrer des UEs validées antérieurement, dans un semestre hors ScoDoc.

-

Les UE validées dans ScoDoc sont + +

+

Les UE validées dans ScoDoc sont automatiquement prises en compte.

Cette page est surtout utile pour les étudiants ayant @@ -1227,11 +1229,12 @@ def formsemestre_validate_previous_ue(formsemestre: FormSemestre, etud: Identite l'attribution des ECTS si le code jury est validant (ADM).

On ne peut valider ici que les UEs du cursus {formation.titre}

+
{_get_etud_ue_cap_html(etud, formsemestre)} -
-
+
+
Enregistrer une UE antérieure
{tf[1]} diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py index 61c8f1ee5..55c8d8ae4 100644 --- a/app/scodoc/sco_utils.py +++ b/app/scodoc/sco_utils.py @@ -1442,7 +1442,7 @@ def icontag(name, file_format="png", no_size=False, **attrs): ICON_PDF = icontag("pdficon16x20_img", title="Version PDF") -ICON_XLS = icontag("xlsicon_img", title="Version tableur") +ICON_XLS = icontag("xlsicon_img", title="Export tableur (xlsx)") # HTML emojis EMO_WARNING = "⚠️" # warning /!\ diff --git a/app/static/css/assiduites.css b/app/static/css/assiduites.css index f4d1ee4f7..d23a9ef4c 100644 --- a/app/static/css/assiduites.css +++ b/app/static/css/assiduites.css @@ -577,13 +577,6 @@ border: solid 1px #333; } -.assi-liste { - border: 1px solid gray; - border-radius: 12px; - margin-right: 24px; - padding: 12px; -} - #options-tableau label { font-weight: normal; margin-right: 12px; @@ -651,7 +644,7 @@ tr.row-justificatif.non_valide td.assi-type { background-color: var(--color-justi-invalide); } -/* +/* <== Loader ==> diff --git a/app/static/css/scodoc.css b/app/static/css/scodoc.css index 8dfd3c19f..6987406e0 100644 --- a/app/static/css/scodoc.css +++ b/app/static/css/scodoc.css @@ -6,6 +6,7 @@ --sco-content-max-width: 1024px; --sco-color-explication: rgb(10, 58, 140); --sco-color-background: rgb(242, 242, 238); + --sco-color-box-bg: rgb(243, 240, 228); --sco-color-mod-std: #afafc2; --sco-color-ressources: #f8c844; --sco-color-saes: #c6ffab; @@ -28,10 +29,6 @@ body { } } -div.container { - margin-bottom: 24px; -} - h1, h2, h3 { @@ -43,6 +40,47 @@ h3 { font-weight: bold; } +div.container { + margin-bottom: 24px; +} + +div.sco-app-content { + display: flex; + flex-direction: column; +} +div.scobox { + flex: 1 0 0; /* Equal width for all boxes */ + max-width: var(--sco-content-max-width); + /* margin: 5px; Optional: Add margin between boxes */ + + background-color: var(--sco-color-box-bg); + margin-top: 12px; + margin-bottom: 12px; + margin-right: 12px; + padding: 8px; + border: 1px solid #c5b4b2; + border-radius: 8px; +} +div.scobox.explanation { + background-color: var(--sco-color-background); +} +div.scobox div.scobox-title { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} +div.scobox-buttons { + margin-top: 16px; + margin-bottom: 4px; +} +div.scobox-buttons input { + font-size: 110%; +} + +div.scobox-etud { + background-color: var(--sco-color-background); +} + /* customization of multiselect style */ .multiselect-container.dropdown-menu { background-color: #e9e9e9; @@ -670,35 +708,20 @@ div#gtrcontent table.semlist tbody tr.css_MEXT td { /* ----- Liste des news ----- */ -div.news { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +div.scobox.news { font-size: 10pt; - margin-top: 1em; - margin-bottom: 0px; - margin-right: 16px; - margin-left: 16px; - padding: 0.5em; background-color: rgb(255, 235, 170); - -moz-border-radius: 8px; - -khtml-border-radius: 8px; - border-radius: 8px; } - div.news a, div.news a.stdlink { color: black; text-decoration: none; } - div.news a:hover { color: rgb(153, 51, 51); text-decoration: underline; } -span.newstitle { - font-weight: bold; -} - ul.newslist { padding-left: 1em; padding-bottom: 0em; @@ -713,6 +736,21 @@ span.newsdate { span.newstext { font-style: normal; } +/* div.news { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 10pt; + margin-top: 1em; + margin-bottom: 0px; + margin-right: 16px; + margin-left: 16px; + padding: 0.5em; + background-color: rgb(255, 235, 170); + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + border-radius: 8px; +} */ + + span.gt_export_icons { margin-left: 1.5em; @@ -1184,7 +1222,6 @@ a.discretelink:hover { text-align: center; } -.expl, .help { max-width: var(--sco-content-max-width); } @@ -1980,9 +2017,17 @@ ul.ue_inscr_list li.etud { grid-template-columns: 240px auto; } +.sem-groups-partition .stdlink, .sem-groups-partition .stdlink:visited { + color: black; + text-decoration-style: dashed; +} +.sem-groups-list .stdlink, .sem-groups-list .stdlink:visited { + color:rgb(0, 0, 192); +} + .sem-groups-list, .sem-groups-assi { - background-color: white; + background-color: #ebebeb; border-radius: 6px; margin: 4px; } @@ -4102,22 +4147,18 @@ div.othersemlist input { margin-left: 20px; } -div#update_warning { +div.scobox.update_warning { display: none; border: 1px solid red; background-color: rgb(250, 220, 220); - margin: 3ex; - padding-left: 1ex; - padding-right: 1ex; - padding-bottom: 1ex; } -div#update_warning > div:first-child:before { +div.scobox.update_warning > div:first-child:before { content: url(/ScoDoc/static/icons/warning_img.png); vertical-align: -80%; } -div#update_warning > div:nth-child(2) { +div.scobox.update_warning > div:nth-child(2) { font-size: 80%; padding-left: 8ex; } diff --git a/app/templates/assiduites/pages/ajout_assiduite_etud.j2 b/app/templates/assiduites/pages/ajout_assiduite_etud.j2 index 1eefaa7ca..aa017568d 100644 --- a/app/templates/assiduites/pages/ajout_assiduite_etud.j2 +++ b/app/templates/assiduites/pages/ajout_assiduite_etud.j2 @@ -110,9 +110,9 @@ div.submit > input {
-
+
{{tableau | safe }} -
+
diff --git a/app/templates/assiduites/pages/ajout_justificatif_etud.j2 b/app/templates/assiduites/pages/ajout_justificatif_etud.j2 index 92d4f1f46..e9f725e0b 100644 --- a/app/templates/assiduites/pages/ajout_justificatif_etud.j2 +++ b/app/templates/assiduites/pages/ajout_justificatif_etud.j2 @@ -137,9 +137,9 @@ div.submit > input { {% if tableau %} -
+
{{tableau | safe }} -
+
{% endif %} diff --git a/app/templates/assiduites/pages/bilan_dept.j2 b/app/templates/assiduites/pages/bilan_dept.j2 index 4fa342ebf..c628bb428 100644 --- a/app/templates/assiduites/pages/bilan_dept.j2 +++ b/app/templates/assiduites/pages/bilan_dept.j2 @@ -7,24 +7,29 @@ {{ super() }} {% endblock scripts %} + {% block app_content %} -

Traitement de l'assiduité

+ +

Traitement de l'assiduité

Pour saisir l'assiduité ou consulter les états, il est recommandé de passer par le semestre concerné (saisie par jour ou saisie différée).

-

Pour signaler, annuler ou justifier l'assiduité d'un seul étudiant, - choisissez d'abord la personne concernée :

-
-{{search_etud | safe}} -
-{{billets | safe}} -
+
+

Pour signaler, annuler ou justifier l'assiduité d'un seul étudiant, + choisissez d'abord la personne concernée :

+{{search_etud | safe}} +
-

Télécharger l'assiduité

- + {{billets | safe}} +
+ + +
+
Télécharger tous les enregistrements d'assiduité
+

- + -
- +
+ +
- +
-
- {{tableau | safe }} +
+ {{tableau | safe }} +
+ {% endblock app_content %} \ No newline at end of file diff --git a/app/templates/assiduites/pages/bilan_etud.j2 b/app/templates/assiduites/pages/bilan_etud.j2 index fafea9a94..4dcfbb391 100644 --- a/app/templates/assiduites/pages/bilan_etud.j2 +++ b/app/templates/assiduites/pages/bilan_etud.j2 @@ -37,16 +37,10 @@ Bilan assiduité de {{sco.etud.nomprenom}} flex-direction: column; } - .alerte { - display: flex; - justify-content: center; - align-items: center; - padding: 10px; - margin: 5px 0; + .scobox.alerte { + text-align: center; border-radius: 7px; - background-color: var(--color-error); - } .alerte.invisible { @@ -70,11 +64,11 @@ Bilan assiduité de {{sco.etud.nomprenom}}

Bilan de l'assiduité de {{sco.etud.html_link_fiche()|safe}}

- +
-
+

Statistiques d'assiduité

@@ -88,13 +82,16 @@ Bilan assiduité de {{sco.etud.nomprenom}}
-
-
+
+
-
Le tableau n'affiche que les assiduités non justifiées et les justificatifs soumis / modifiés
+
Le tableau n'affiche que les assiduités non justifiées + et les justificatifs soumis / modifiés +
{{tableau | safe }}
+

Statistiques

diff --git a/app/templates/assiduites/widgets/tableau.j2 b/app/templates/assiduites/widgets/tableau.j2 index 1ab881c66..b84dc8c95 100644 --- a/app/templates/assiduites/widgets/tableau.j2 +++ b/app/templates/assiduites/widgets/tableau.j2 @@ -1,5 +1,5 @@ -
-
{{ titre }}
+
+
{{ titre }}
{% if afficher_options != false %} {{scu.ICON_XLS|safe}}
{% endif %} - +