{% extends "sco_page.j2" %} {% block styles %} {{super()}} <link href="{{scu.STATIC_DIR}}/css/refcomp_parcours_niveaux.css" rel="stylesheet" type="text/css" /> <link href="{{scu.STATIC_DIR}}/css/parcour_formation.css" rel="stylesheet" type="text/css" /> {% endblock %} {% macro menu_ue(niv, sem="pair", sem_idx=0) -%} {% if niv['niveau'] %} {% if current_user.has_permission(sco.Permission.EditFormation) %} <select name="ue_niv_{{niv['niveau'].id}}" id="ue_niv_{{niv['niveau'].id}}" onchange="assoc_ue_niveau(event, {{niv['niveau'].id}}, {{parcour.id}} );" {% if niv['ue_'+sem] %} data-ue_id="{{niv['ue_'+sem].id}}" {% else %} data-ue_id="" {% endif %} > {%- if not niv['ue_'+sem] -%} <option value="" class="non_associe">UE de S{{sem_idx}} ?</option> {%-else-%} <option value="">Désassocier</option> {%-endif-%} {% for ue in niv['ues_'+sem] %} <option value="{{ue.id}}" {% if niv['ue_'+sem] and niv['ue_'+sem].id == ue.id -%} selected {%- endif %} >{{ue.acronyme}}</option> {% endfor %} </select> {% else %} {# Vue en lecture seule #} {% if niv['ue_'+sem] %} {{ niv['ue_'+sem].acronyme }} {% else %} <span class="fontred">{{scu.EMO_WARNING|safe}} non associé</span> {% endif %} {% endif %} {% endif %} {%- endmacro %} {% block app_content %} <h2>{{formation.html()}}</h2> {# Liens vers les différents parcours #} <div class="les_parcours"> {% for parc in formation.referentiel_competence.parcours %} <div class="parc {{'focus' if parcour and parc.id == parcour.id else ''}}"> <a href="{{ url_for('notes.parcour_formation', scodoc_dept=g.scodoc_dept, parcour_id=parc.id, formation_id=formation.id ) }}">{{parc.code}}</a> </div> {% endfor %} <div class="link"> <a class="stdlink" target="_blank" rel="noopener noreferrer" href="{{ url_for('notes.refcomp_show', scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id ) }}">référentiel de compétences</a> </div> <div class="link"><a class="stdlink" href="{{ url_for('notes.ue_table', scodoc_dept=g.scodoc_dept, formation_id=formation.id ) }}">formation</a> </div> </div> {# Description d'un parcours #} {% if parcour %} <div class="parcour_formation"> <div class="titre_parcours">Parcours {{parcour.code}} « {{parcour.libelle}} »</div> {% for comp in competences_parcour %} {% set color_idx = 1 + loop.index0 % 6 %} <div class="competence comp-c{{color_idx}}"> <div class="titre_competence tc"> Compétence {{comp['competence'].numero}} : {{comp['competence'].titre}} </div> <div class="niveaux"> {% for annee, niv in comp['niveaux'].items() %} <div class="niveau comp-c{{color_idx}}-{{annee}}" style="--color: var(--col-c{{color_idx}}-{{annee}});"> <div class="titre_niveau n{{annee}}"> <span class="parcs"> {% if niv['niveau'].is_tronc_commun %} <span class="parc">TC</span> {% elif niv['niveau'].parcours|length > 1 %} <span class="parc"> {% set virg = joiner(", ") %} {% for p in niv['niveau'].parcours %} {{ virg() }}{{p.code}} {% endfor %} </span> {% endif %} </span> {{niv['niveau'].libelle if niv['niveau'] else ''}} </div> <div class="ue impair u{{annee}}1"> {{ menu_ue(niv, "impair", 2*annee-1) }} </div> <div class="ue pair u{{annee}}1"> {{ menu_ue(niv, "pair", 2*annee) }} </div> </div> {% endfor %} </div> </div> {% endfor %} </div> <div class="recap_ects"> {{"%g"|format(ects_parcours)}} ECTS dans ce parcours. </div> {% else %} <div> Choisissez un parcours... </div> {% endif %} {% if parcour %} <div class="help"> <p> Cette page représente le parcours <span class="parc">{{parcour.code}}</span> du référentiel de compétence {{formation.referentiel_competence.specialite}}, et permet d'associer à chaque semestre d'un niveau de compétence une UE de la formation <a class="stdlink" href="{{url_for('notes.ue_table', scodoc_dept=g.scodoc_dept, formation_id=formation.id ) }}">{{formation.html()}} </a>.</p> <p>Le symbole <span class="parc">TC</span> désigne un niveau du tronc commun (c'est à dire présent dans tous les parcours de la spécialité). </p> <p>Ce formulaire ne vérifie pas si l'UE est bien conçue pour ce parcours.</p> <p>Les modifications sont enregistrées au fur et à mesure.</p> </div> {% endif %} <script> function assoc_ue_niveau(event, niveau_id) { let ue_id = event.target.value; let url = ""; let must_reload = false; if (ue_id == "") { /* Dé-associe */ ue_id = event.target.dataset.ue_id; const desassoc_url = '{{ url_for( "apiweb.desassoc_ue_niveau", scodoc_dept=g.scodoc_dept, ue_id=11111 ) }}'; url = desassoc_url.replace('11111', ue_id); must_reload=true; } else { const assoc_url = '{{ url_for( "apiweb.assoc_ue_niveau", scodoc_dept=g.scodoc_dept, ue_id=11111, niveau_id=22222 ) }}'; url = assoc_url.replace('11111', ue_id).replace('22222', niveau_id); } fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, /* body: JSON.stringify( {} ) */ }) .then(response => response.json()) .then(data => { if (data.status) { /* sco_message(data.message); */ /* revert menu to initial state */ event.target.value = event.target.dataset.ue_id; } location.reload(); }); } </script> {% endblock %}