1
0
forked from ScoDoc/ScoDoc
ScoDoc-Front/app/static/js/saisie_notes.js

134 lines
4.3 KiB
JavaScript
Raw Normal View History

2020-09-26 16:19:37 +02:00
// Formulaire saisie des notes
2021-06-21 18:46:35 +02:00
$().ready(function () {
2020-09-26 16:19:37 +02:00
$("#formnotes .note").bind("blur", valid_note);
$("#formnotes input").bind("paste", paste_text);
2023-03-22 21:57:40 +01:00
$(".btn_masquer_DEM").bind("click", masquer_DEM);
2021-06-21 18:46:35 +02:00
2020-09-26 16:19:37 +02:00
});
function is_valid_note(v) {
if (!v)
2021-06-21 18:46:35 +02:00
return true;
2020-09-26 16:19:37 +02:00
var note_min = parseFloat($("#eval_note_min").text());
var note_max = parseFloat($("#eval_note_max").text());
2021-06-21 18:46:35 +02:00
2023-03-22 21:57:40 +01:00
if (!v.match("^-?[0-9]*.?[0-9]*$")) {
2021-06-21 18:46:35 +02:00
return (v == "ABS") || (v == "EXC") || (v == "SUPR") || (v == "ATT") || (v == "DEM");
2020-09-26 16:19:37 +02:00
} else {
var x = parseFloat(v);
return (x >= note_min) && (x <= note_max);
}
}
function valid_note(e) {
var v = this.value.trim().toUpperCase().replace(",", ".");
if (is_valid_note(v)) {
if (v && (v != $(this).attr('data-last-saved-value'))) {
this.className = "note_valid_new";
var etudid = $(this).attr('data-etudid');
save_note(this, v, etudid);
}
} else {
/* Saisie invalide */
this.className = "note_invalid";
sco_message("valeur invalide ou hors barème");
2020-09-26 16:19:37 +02:00
}
}
function save_note(elem, v, etudid) {
var evaluation_id = $("#formnotes_evaluation_id").attr("value");
var formsemestre_id = $("#formnotes_formsemestre_id").attr("value");
$('#sco_msg').html("en cours...").show();
$.post(SCO_URL + '/Notes/save_note',
2021-06-21 18:46:35 +02:00
{
'etudid': etudid,
'evaluation_id': evaluation_id,
'value': v,
'comment': document.getElementById('formnotes_comment').value
2021-06-21 18:46:35 +02:00
},
function (result) {
2023-05-31 12:25:40 +02:00
$('#sco_msg').hide();
2021-06-21 18:46:35 +02:00
if (result['nbchanged'] > 0) {
2023-03-22 21:57:40 +01:00
sco_message("enregistré");
elem.className = "note_saved";
2021-06-21 18:46:35 +02:00
// il y avait une decision de jury ?
if (result.existing_decisions[0] == etudid) {
if (v != $(elem).attr('data-orig-value')) {
$("#jurylink_" + etudid).html('<a href="formsemestre_validation_etud_form?formsemestre_id=' + formsemestre_id + '&etudid=' + etudid + '">mettre à jour décision de jury</a>');
} else {
$("#jurylink_" + etudid).html('');
2020-09-26 16:19:37 +02:00
}
}
2021-06-21 18:46:35 +02:00
// mise a jour menu historique
if (result['history_menu']) {
$("#hist_" + etudid).html(result['history_menu']);
}
2023-03-22 21:57:40 +01:00
$(elem).attr('data-last-saved-value', v);
} else {
$('#sco_msg').html("").show();
sco_message("valeur non enregistrée");
2020-09-26 16:19:37 +02:00
}
2023-03-22 21:57:40 +01:00
2021-06-21 18:46:35 +02:00
}
);
2020-09-26 16:19:37 +02:00
}
function change_history(e) {
var opt = e.selectedOptions[0];
var val = $(opt).attr("data-note");
var etudid = $(e).attr('data-etudid');
// le input associé a ce menu:
var input_elem = e.parentElement.parentElement.parentElement.childNodes[0];
input_elem.value = val;
save_note(input_elem, val, etudid);
}
// Contribution S.L.: copier/coller des notes
function paste_text(e) {
var event = e.originalEvent;
event.stopPropagation();
event.preventDefault();
var clipb = e.originalEvent.clipboardData;
var data = clipb.getData('Text');
var list = data.split(/\r\n|\r|\n|\t| /g);
var currentInput = event.currentTarget;
2023-03-22 21:57:40 +01:00
var masquerDEM = document.querySelector("body").classList.contains("masquer_DEM");
2021-06-21 18:46:35 +02:00
for (var i = 0; i < list.length; i++) {
currentInput.value = list[i];
var evt = document.createEvent("HTMLEvents");
evt.initEvent("blur", false, true);
currentInput.dispatchEvent(evt);
var sibbling = currentInput.parentElement.parentElement.nextElementSibling;
while (
2023-03-22 21:57:40 +01:00
sibbling &&
(
sibbling.style.display == "none" ||
(
masquerDEM && sibbling.classList.contains("etud_dem")
)
)
) {
2020-09-26 16:19:37 +02:00
sibbling = sibbling.nextElementSibling;
}
2021-06-21 18:46:35 +02:00
if (sibbling) {
currentInput = sibbling.querySelector("input");
if (!currentInput) {
return;
}
} else {
return;
}
2020-09-26 16:19:37 +02:00
}
2021-06-21 18:46:35 +02:00
}
2023-03-22 21:57:40 +01:00
function masquer_DEM() {
document.querySelector("body").classList.toggle("masquer_DEM");
}