templates/school/report_card/edit.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Editer | {{ parent() }}{% endblock %}
  3. {% block body %}
  4.     <div class="breadcrumb">
  5.         <h1 class="mr-2">Bulletin de notes</h1>
  6.         <ul>
  7.             <li><a href="{{ path('default') }}" onclick="$('.loader').addClass('is-active');">Accueil</a></li>
  8.             <li><a href="#">Pedagogie</a></li>
  9.             <li><a href="{{ path('report_card_index') }}" onclick="$('.loader').addClass('is-active');">Retour</a></li>
  10.             <li>Editer : {{ report_card.label }}</li>
  11.             <li>{{ report_card.level }}</li>
  12.             <li>{{ report_card.schoolYearPeriode }}</li>
  13.         </ul>
  14.     </div>
  15.     <div class="separator-breadcrumb border-top"></div>
  16.     <div class="row mb-4">
  17.         <div class="col-md-12">
  18.             {% if not report_card.schoolYearPeriode.isClosed %}
  19.                 <a href="#" class="btn btn-danger" onclick="javascript:actionByPathAndElts('{{path('school_report_cards_selected_delete')}}')" id="delete-selected-btn"><i class="fa fa-trash"></i> Supprimer</a>
  20.                 {% if report_card.isValidated %}
  21.                     <a href="#" class="btn btn-warning" onclick="javascript:actionByPathAndElts('{{path('report_card_cancel', {'id': report_card.id})}}')"><i class="fa fa-times"></i> Annuler</a>
  22.                     {% else %}
  23.                         <a href="#" class="btn btn-success" onclick="javascript:actionByPathAndElts('{{path('report_card_validate', {'id': report_card.id})}}')"><i class="fa fa-check"></i> Valider</a>
  24.                 {% endif %}
  25.             {% endif %}
  26.             &nbsp;<a href="{{ path('report_card_edit', {'id': report_card.id}) }}" class="btn btn-primary"><i class="fa fa-reload"></i> Actualiser</a>
  27.             {% if is_granted('ROLE_ADMIN') %}
  28.                 &nbsp;<button type="button" class="btn btn-dark" data-toggle="modal" data-target="#modalImpression"><i class="fa fa-print"></i> Imprimer bulletin</button>
  29.             {% endif %}
  30.             &nbsp;<div class="btn-group">
  31.                 <button type="button" class="btn btn-dark dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  32.                     <i class="fa fa-print"></i> Fiches &amp; Bordereaux
  33.                 </button>
  34.                 <div class="dropdown-menu">
  35.                     <a class="dropdown-item" href="{{ path('report_card_blank_note_card_print', {'id': report_card.id}) }}"><i class="fa fa-file-o"></i> Fiche de note Vide</a>
  36.                     <a class="dropdown-item" href="{{ path('report_card_note_card_print', {'id': report_card.id}) }}"><i class="fa fa-file-text-o"></i> Fiche de note</a>
  37.                     <div class="dropdown-divider"></div>
  38.                     <a class="dropdown-item" href="{{ path('report_card_assessment_slip_print', {'id': report_card.id}) }}"><i class="fa fa-list"></i> Bordereau d'évaluation</a>
  39.                     <a class="dropdown-item" href="{{ path('report_card_annual_assessment_slip_print', {'id': report_card.id}) }}"><i class="fa fa-list-alt"></i> Bordereau d'évaluation annuel</a>
  40.                 </div>
  41.             </div>
  42.         </div>
  43.     </div>
  44.     <hr />
  45.     <div class="row mb-4">
  46.         <div class="col-md-12">
  47.             {# <a href="#" class="btn btn-primary" onclick="javascript:computeAverage();"><i class="fa fa-calculator"></i> Recalculer les moyennes</a> 
  48.             &nbsp;<a href="#" class="btn btn-primary" onclick="javascript:computeRank();"><i class="fa fa-calculator"></i> Recalculer les rangs</a>
  49.             &nbsp;<a href="#" class="btn btn-primary" onclick="javascript:computeAnnualReportCardAverage();"><i class="fa fa-calculator"></i> Recalculer les moyennes annuelles</a>
  50.             &nbsp;<a href="#" class="btn btn-primary" onclick="javascript:computeAnnualRank();"><i class="fa fa-calculator"></i> Recalculer les rangs annuelles</a> #}
  51.         </div>
  52.     </div>
  53.     {# un panel bien organisé pour les boutons de calcul des moyennes #}
  54.     <div class="row mb-4">
  55.         <div class="col-md-12 mb-4">
  56.             <div class="card text-left">
  57.                 <div class="card-header">Calcul des moyennes</div>
  58.                 <div class="card-body">
  59.                     <div class="table-responsive">
  60.                         <table class="display table table-striped table-bordered">
  61.                             <tbody>
  62.                                 <tr>
  63.                                     <td><a href="#" onclick="javascript:computeSchoolAverageReportCards();"><i class="fa fa-calculator"></i> Recalculer les moyennes</a></td>
  64.                                     <td><a href="#" onclick="javascript:computeStudentRank();"><i class="fa fa-calculator"></i> Faire le rang</a></td>
  65.                                     <td><a href="#" onclick="javascript:computeAnnualReportCardAverage();"><i class="fa fa-calculator"></i> Moyennes annuelles</a></td>
  66.                                     <td><a href="#" onclick="javascript:computeAnnualRank();"><i class="fa fa-calculator"></i> Rang annuelles</a></td>
  67.                                 </tr>
  68.                             </tbody>
  69.                         </table>
  70.                     </div>
  71.                 </div>
  72.             </div>
  73.         </div>
  74.     </div>
  75.     <hr />
  76.     <div class="row mb-4">
  77.         <div class="col-md-12 mb-4">
  78.             <div class="card text-left">
  79.                 <div class="card-header">Bulletins élève</div>
  80.                 <div class="card-body">
  81.                     <div class="table-responsive">
  82.                         <table class="display table table-striped table-bordered">
  83.                             <thead>
  84.                                 <tr>
  85.                                     <th class="text-center" width="5%">
  86.                                         {% if not report_card.schoolYearPeriode.isClosed %}
  87.                                             <input type="checkbox" id="check-all" onclick="javascript:checkAllElt()">
  88.                                         {% endif %}
  89.                                     </th>
  90.                                     <th>Bulletin élève</th>
  91.                                     <th>Classe</th>
  92.                                     <th>Moyenne</th>
  93.                                     <th class="text-center" width="10%">Action</th>
  94.                                 </tr>
  95.                                 {% if not report_card.schoolYearPeriode.isClosed %}
  96.                                     <tr>
  97.                                         {{ form_start(school_report_card_form) }}
  98.                                             <th></th>
  99.                                             <th>
  100.                                                 {{ form_widget(school_report_card_form.studentRegistration,{'attr': {'class': 'form-control select', 'style': 'width: 100%;'}}) }}
  101.                                             </th>
  102.                                             <th></th>
  103.                                             <th></th>
  104.                                             <th class="text-center">
  105.                                                 <button class="btn-sm btn-primary"><i class="fa fa-plus"></i></button>
  106.                                             </th>
  107.                                         {{ form_end(school_report_card_form) }}
  108.                                     </tr>
  109.                                 {% endif %}
  110.                             </thead>
  111.                             <tbody>
  112.                             {% for schoolReportCard in school_report_cards %}
  113.                                 <tr {% if not schoolReportCard.isValidated %}style="color: red; font-weight: bold;"{% endif %}>
  114.                                     <td class="text-center">
  115.                                         {% if not report_card.schoolYearPeriode.isClosed %}
  116.                                             <input type="checkbox" class="check-elt" value="{{ schoolReportCard.id }}" onclick="javascript:checkElt()">
  117.                                         {% endif %}
  118.                                     </td>
  119.                                     <td>{{ schoolReportCard.name }}</td>
  120.                                     <td>{{ schoolReportCard.classroom }}</td>
  121.                                     <td>{{ schoolReportCard.isUnclassified ? 'NC' : schoolReportCard.reportCardAverage|round(2, 'floor')|replace({"." : ","}) }} {{ schoolReportCard.isValidated ? '(Validé)' : '(Brouillon)' }} </td>
  122.                                     <td class="text-center">
  123.                                         <a href="{{ path('school_report_card_edit', {'id': schoolReportCard.id}) }}" target="_blank" class="btn btn-primary btn-sm"><i class="fa fa-edit"></i></a>
  124.                                     </td>
  125.                                 </tr>
  126.                             {% endfor %}
  127.                             </tbody>
  128.                         </table>
  129.                     </div>
  130.                 </div>
  131.             </div>
  132.         </div>
  133.     </div>
  134.     <div class="row mb-4">
  135.         <div class="col-md-12 mb-4">
  136.             <div class="card text-left">
  137.                 <div class="card-header">Edition</div>
  138.                 <div class="card-body">
  139.                     {{ include('school/report_card/_edit_form.html.twig') }}
  140.                 </div>
  141.             </div>
  142.         </div>
  143.     </div>
  144.     {# Modal sélection de classe pour l'impression des bulletins modal-lg #}
  145.     <div class="modal fade" id="modalImpression" tabindex="-1" role="dialog" aria-labelledby="modalImpressionLabel" aria-hidden="true">
  146.         <div class="modal-dialog modal-lg" role="document">
  147.             <div class="modal-content">
  148.                 <div class="modal-header">
  149.                     <h5 class="modal-title" id="modalImpressionLabel"><i class="fa fa-print"></i> Imprimer les bulletins</h5>
  150.                     <button type="button" class="close" data-dismiss="modal" aria-label="Fermer">
  151.                         <span aria-hidden="true">&times;</span>
  152.                     </button>
  153.                 </div>
  154.                 <div class="modal-body">
  155.                     <div class="form-group">
  156.                         <label for="selectClassroom">Classe <small class="text-muted">(laisser vide pour toutes les classes du niveau)</small></label>
  157.                         <select id="selectClassroom" class="form-control">
  158.                             <option value="">— Toutes les classes —</option>
  159.                             {% for classroom in report_card.level.settingClassrooms %}
  160.                                 {% if classroom.schoolYear == report_card.schoolYear %}
  161.                                     <option value="{{ classroom.id }}">{{ classroom.label }}</option>
  162.                                 {% endif %}
  163.                             {% endfor %}
  164.                         </select>
  165.                     </div>
  166.                 </div>
  167.                 <div class="modal-footer flex-wrap gap-1">
  168.                     {% if app.user.establishment.type == 'PRESCOLAIRE-PRIMAIRE' %}
  169.                         <a id="btnMaternelle" href="{{ path('report_card_maternelle_print', {'id': report_card.id}) }}" class="btn btn-dark"><i class="fa fa-print"></i> Maternelle</a>
  170.                         <a id="btnBilanMaternelle" href="{{ path('report_card_last_maternelle_print', {'id': report_card.id}) }}" class="btn btn-info"><i class="fa fa-print"></i> Bilan Maternelle</a>
  171.                         <a id="btnPrimaire" href="{{ path('report_card_print', {'id': report_card.id}) }}" class="btn btn-dark"><i class="fa fa-print"></i> Primaire</a>
  172.                         <a id="btnBilanPrimaire" href="{{ path('report_card_last_print', {'id': report_card.id}) }}" class="btn btn-info"><i class="fa fa-print"></i> Bilan Primaire</a>
  173.                     {% else %}
  174.                         <a id="btnImprimer" href="{{ path('report_card_print', {'id': report_card.id}) }}" class="btn btn-dark"><i class="fa fa-print"></i> Imprimer</a>
  175.                         <a id="btnDernierBulletin" href="{{ path('report_card_last_print', {'id': report_card.id}) }}" class="btn btn-info"><i class="fa fa-print"></i> Dernier bulletin</a>
  176.                     {% endif %}
  177.                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
  178.                 </div>
  179.             </div>
  180.         </div>
  181.     </div>
  182. {% endblock %}
  183. {% block javascripts %}
  184.     {{ parent() }}
  185.     <script>
  186.         {% if not report_card.schoolYearPeriode.isClosed %}
  187.             $(document).ready(function () {
  188.                 setInterval(function () {
  189.                     {% if report_card.isValidated %}
  190.                         //computeRank();
  191.                         //computeAnnualRank();
  192.                         {% else %}
  193.                         //computeAverage();
  194.                     {% endif %}
  195.                     //computeAnnualReportCardAverage();
  196.                     //computeAnnualMatterAverage();
  197.                 }, 360000);
  198.             })
  199.         {% endif %}
  200.         /*function computeConductAverage() {
  201.             path = '{{ path('report_card_compute_conduct_average', {'id': report_card.id}) }}';
  202.             axios.get(path, {
  203.             params: {}
  204.             }).then(function (response) {
  205.                 if(response.data.code == 200){
  206.                     console.log(response.data);
  207.                     computeAverage();
  208.                 }else{
  209.                 }
  210.             });
  211.         }*/
  212.         function computeAnnualMatterAverage() {
  213.             path = '{{ path('report_card_compute_annual_matter_average', {'id': report_card.id}) }}';
  214.             axios.get(path, {
  215.             params: {}
  216.             }).then(function (response) {
  217.                 console.log(response.data);
  218.             });
  219.         }
  220.         function computeAnnualRank() {
  221.             $('.loader').addClass('is-active');
  222.             path = '{{ path('report_card_compute_annual_rank', {'id': report_card.id}) }}';
  223.             axios.get(path, {
  224.             params: {}
  225.             }).then(function (response) {
  226.                 console.log(response.data);
  227.                 $('.loader').removeClass('is-active');
  228.                 location.reload();
  229.             });
  230.         }
  231.         function computeAnnualReportCardAverage() {
  232.             $('.loader').addClass('is-active');
  233.             path = '{{ path('report_card_compute_annual_report_card_average', {'id': report_card.id}) }}';
  234.             axios.get(path, {
  235.             params: {}
  236.             }).then(function (response) {
  237.                 if(response.data.code == 200){
  238.                     computeAnnualMatterAverage();
  239.                 }
  240.                 console.log(response.data);
  241.                 $('.loader').removeClass('is-active');
  242.                 location.reload();
  243.             });
  244.         }
  245.         function computeAverage() {
  246.             $('.loader').addClass('is-active');
  247.             path = '{{ path('report_card_compute_average', {'id': report_card.id}) }}';
  248.             axios.get(path, {
  249.             params: {}
  250.             }).then(function (response) {
  251.                 if(response.data.code == 200){
  252.                     console.log(response.data);
  253.                     computeMinMaxAverage();
  254.                     computeLevelMaxMinAverage();
  255.                     $('.loader').removeClass('is-active');
  256.                     location.reload();
  257.                 }else{
  258.                     $('.loader').removeClass('is-active');
  259.                     location.reload();
  260.                 }
  261.             });
  262.         }
  263.         function computeRank() {
  264.             $('.loader').addClass('is-active');
  265.             path = '{{ path('report_card_compute_rank', {'id': report_card.id}) }}';
  266.             axios.get(path, {
  267.             params: {}
  268.             }).then(function (response) {
  269.                 $('.loader').removeClass('is-active');
  270.                 console.log(response.data);
  271.                 location.reload();
  272.             });
  273.         }
  274.         function computeMinMaxAverage() {
  275.             path = '{{ path('report_card_compute_min_max_average', {'id': report_card.id}) }}';
  276.             axios.get(path, {
  277.             params: {}
  278.             }).then(function (response) {
  279.                 console.log(response.data);
  280.             });
  281.         }
  282.         function computeLevelMaxMinAverage() {
  283.             path = '{{ path('report_card_compute_level_average', {'id': report_card.id}) }}';
  284.             axios.get(path, {
  285.             params: {}
  286.             }).then(function (response) {
  287.                 if(response.data.code == 200){
  288.                     console.log(response.data);
  289.                 }else{
  290.                 }
  291.                 console.log(response.data);
  292.             });
  293.         }
  294.         /**
  295.          * Calculer les moyennes des élèves par matière
  296.          */
  297.         function computeSchoolAverageReportCards() {
  298.             $('.loader').addClass('is-active');
  299.             axios.get('{{ path('compute_school_average_report_cards', {'id': report_card.id}) }}', {
  300.             params: {}
  301.             }).then(function (response) {
  302.                 if(response.data.code == 200){
  303.                     computeGeneralAverage();
  304.                     console.log(response.data);
  305.                     $('.loader').removeClass('is-active');
  306.                     location.reload();
  307.                 }else{
  308.                     $('.loader').removeClass('is-active');
  309.                     location.reload();
  310.                 }
  311.                 console.log(response.data);
  312.             });
  313.         }
  314.         /**
  315.          * Calculer la moyenne générale des élèves
  316.          */
  317.         function computeGeneralAverage() {
  318.             axios.get('{{ path('compute_general_average', {'id': report_card.id}) }}', {
  319.             params: {}
  320.             }).then(function (response) {
  321.                 if(response.data.code == 200){
  322.                     return true;
  323.                 }else{
  324.                     return false;
  325.                 }
  326.                 console.log(response.data);
  327.                 return false;
  328.             });
  329.         }
  330.         /**
  331.          * Calculer les moyennes des élèves par matière
  332.          */
  333.         function computeStudentRank() {
  334.             $('.loader').addClass('is-active');
  335.             axios.get('{{ path('compute_student_rank', {'id': report_card.id}) }}', {
  336.             params: {}
  337.             }).then(function (response) {
  338.                 if(response.data.code == 200){
  339.                     console.log(response.data);
  340.                     $('.loader').removeClass('is-active');
  341.                     location.reload();
  342.                 }else{
  343.                     $('.loader').removeClass('is-active');
  344.                     location.reload();
  345.                 }
  346.                 console.log(response.data);
  347.             });
  348.         }
  349.     </script>
  350.     <script>
  351.         (function () {
  352.             var baseUrls = {
  353.                 {% if app.user.establishment.type == 'PRESCOLAIRE-PRIMAIRE' %}
  354.                 btnMaternelle: '{{ path('report_card_maternelle_print', {'id': report_card.id}) }}',
  355.                 btnBilanMaternelle: '{{ path('report_card_last_maternelle_print', {'id': report_card.id}) }}',
  356.                 btnPrimaire: '{{ path('report_card_print', {'id': report_card.id}) }}',
  357.                 btnBilanPrimaire: '{{ path('report_card_last_print', {'id': report_card.id}) }}'
  358.                 {% else %}
  359.                 btnImprimer: '{{ path('report_card_print', {'id': report_card.id}) }}',
  360.                 btnDernierBulletin: '{{ path('report_card_last_print', {'id': report_card.id}) }}'
  361.                 {% endif %}
  362.             };
  363.             document.getElementById('selectClassroom').addEventListener('change', function () {
  364.                 var classroomId = this.value;
  365.                 Object.keys(baseUrls).forEach(function (id) {
  366.                     var el = document.getElementById(id);
  367.                     if (el) {
  368.                         el.href = classroomId ? baseUrls[id] + '?classroom_id=' + classroomId : baseUrls[id];
  369.                     }
  370.                 });
  371.             });
  372.         })();
  373.     </script>
  374. {% endblock %}