{% include "assiduites/widgets/tableau_base.j2" %}
<section class="alerte invisible">
    <p>Attention, cet étudiant a trop d'absences</p>
</section>

<section class="nonvalide">
    <!-- Tableaux des justificatifs à valider (attente / modifié ) -->
    <h4>Justificatifs en attente (ou modifiés)</h4>
    <span class="iconline">
        <a class="icon filter" onclick="filterJusti(true)"></a>
        <a class="icon download" onclick="downloadJusti()"></a>
    </span>
    {% include "assiduites/widgets/tableau_justi.j2" %}
</section>

<div class="annee">
    <span>Année scolaire 2022-2023 Changer année: </span>
    <select name="" id="annee" onchange="setterAnnee(this.value)">
    </select>
</div>

<div class="legende">
    <h3>Gestion des justificatifs</h3>
    <p>
        Faites
        <span style="font-style: italic;">clic droit</span> sur une ligne du tableau pour afficher le menu contextuel :
    <ul>
        <li>Détails : Affiche les détails du justificatif sélectionné</li>
        <li>Editer : Permet de modifier le justificatif (dates, etat, ajouter/supprimer fichier etc)</li>
        <li>Supprimer : Permet de supprimer le justificatif (Action Irréversible)</li>
    </ul>
    </p>
</div>
<script>

    let formsemestre_id = "{{formsemestre_id}}"
    let group_id = "{{group_id}}"

    function getDeptJustificatifsFromPeriod(action) {
        const formsemestre = formsemestre_id ? `&formsemestre_id=${formsemestre_id}` : ""
        const group = group_id ? `&group_id=${group_id}` : ""
        const path = getUrl() + `/api/justificatifs/dept/${dept_id}/query?date_debut=${bornes.deb}&date_fin=${bornes.fin}${formsemestre}${group}`
        async_get(
            path,
            (data, status) => {
                if (action) {
                    action(data)
                } else {
                    justificatifCallBack(data);
                }
            },
            (data, status) => {
                console.error(data, status)
                errorAlert();
            }
        )
    }

    function generate(annee) {

        if (annee < 1999 || annee > 2999) {
            openAlertModal("Année impossible", document.createTextNode("L'année demandé n'existe pas."));
            return;
        }
        bornes = {
            deb: `${annee}-09-01T00:00`,
            fin: `${annee + 1}-08-31T23:59`
        }

        defAnnee = annee;

        loadAll();

    }

    function getJusti(action) {
        try { getDeptJustificatifsFromPeriod(action) } catch (_) { }
    }

    function setterAnnee(annee) {
        annee = parseInt(annee);
        document.querySelector('.annee span').textContent = `Année scolaire ${annee}-${annee + 1} Changer année: `
        generate(annee)

    }
    let defAnnee = {{ annee }};
    let bornes = {
        deb: `${defAnnee}-09-01T00:00`,
        fin: `${defAnnee + 1}-08-31T23:59`
    }
    const dept_id = {{ dept_id }};

    let annees = {{ annees | safe}}

    annees = annees.filter((x, i) => annees.indexOf(x) === i)

    window.addEventListener('load', () => {

        filterJustificatifs = {
            "columns": [
                "formsemestre",
                "etudid",
                "entry_date",
                "date_debut",
                "date_fin",
                "etat",
                "raison",
                "fichier"
            ],
            "filters": {
                "etat": [
                    "attente",
                    "modifie"
                ],
            }
        }
        const select = document.querySelector('#annee');

        annees.forEach((a) => {
            const opt = document.createElement("option");
            opt.value = a + "",
                opt.textContent = `${a} - ${a + 1}`;
            if (a === defAnnee) {
                opt.selected = true;
            }
            select.appendChild(opt)
        })
        setterAnnee(defAnnee)
    })

</script>
<style>
    .stats-values-item {
        display: flex;
        justify-content: space-evenly;
        align-items: center;
        flex-direction: column;
    }

    .stats {
        border: 1px solid #333;
        padding: 5px 2px;
        width: fit-content;
    }

    .stats-values {
        display: flex;
        justify-content: flex-start;
        gap: 15px;
    }

    .stats-values-item h5 {
        font-weight: bold;
        text-decoration-line: underline;
    }

    .stats-values-part {
        display: flex;
        flex-direction: column;
    }

    .alerte {
        display: flex;
        justify-content: center;
        align-items: center;
        padding: 10px;
        margin: 5px 0;
        border-radius: 7px;

        background-color: var(--color-error);

    }

    .alerte.invisible {
        display: none;
    }

    .alerte p {
        font-size: larger;
        color: whitesmoke;

    }

    .suppr {
        margin: 5px 0;
    }
</style>