// Affiche et met a jour la liste des UE partageant le meme code

$().ready(function () {
    if (document.querySelector("#tf_ue_id")) {
        /* fonctions spécifiques pour edition UE */
        update_ue_list();
        $("#tf_ue_code").bind("keyup", update_ue_list);

        $("select#tf_type").change(function () {
            update_bonus_description();
        });
        update_bonus_description();
    }
});

function update_bonus_description() {
    var ue_type = $("#tf_type")[0].value;
    if (ue_type == "1") { /* UE SPORT */
        $("#bonus_description").show();
        var query = "/ScoDoc/get_bonus_description/default";
        $.get(query, '', function (data) {
            $("#bonus_description").html(data);
        });
    } else {
        $("#bonus_description").html("");
        $("#bonus_description").hide();
    }
}

function update_ue_list() {
    let ue_id = $("#tf_ue_id")[0].value;
    let ue_code = $("#tf_ue_code")[0].value;
    let query = SCO_URL + "/Notes/ue_sharing_code?ue_code=" + ue_code + "&hide_ue_id=" + ue_id + "&ue_id=" + ue_id;
    $.get(query, '', function (data) {
        $("#ue_list_code").html(data);
    });
}

function set_ue_niveau_competence(elem) {
    let ue_id = elem.dataset.ue_id;
    let niveau_id = elem.value;
    let set_ue_niveau_competence_url = elem.dataset.setter;
    $.post(set_ue_niveau_competence_url,
        {
            ue_id: ue_id,
            niveau_id: niveau_id,
        },
        function (result) {
            // alert("niveau de compétence enregistré"); // XXX #frontend à améliorer
            sco_message("niveau de compétence enregistré");

            update_menus_niveau_competence();
        }
    );
}

// Met à jour les niveaux utilisés (disabled) ou non affectés
// dans les menus d'association UE <-> niveau
function update_menus_niveau_competence() {
    let selected_niveaux = [];
    document.querySelectorAll("form.form_ue_choix_niveau select").forEach(
        elem => { selected_niveaux.push(elem.value); }
    );

    document.querySelectorAll("form.form_ue_choix_niveau select").forEach(
        elem => {
            for (let i = 0; i < elem.options.length; i++) {
                elem.options[i].disabled = (i != elem.options.selectedIndex)
                    && (selected_niveaux.indexOf(elem.options[i].value) != -1)
                    && (elem.options[i].value != "");
            }
        }
    );
}