123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- //alumnosObj.push({id: <?php echo $cve;?>, nombre:"", plan:"", matArr:[{id, desc, clave, plan, sem, grupo_id, grupo, califArr{calif, fecha, calif_tipo, revalidada}}]});
- var _min_calif = 8;//para select
- //carga las materias en el objeto alumnosObj
- function loadMaterias(){
- if(idArr.length > 0){
- $.ajax({
- url: './action/asignamaterias_select.php',
- type: 'POST',
- dataType: 'json',
- data: { idArr: idArr, plan: _plan},
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }else{
- //cargar datos de materias
- if(result["alumnos"].length > 0){//hay materias
- alumnosObj = result["alumnos"];
- }//hay materias
-
- printAlumnosDataHTML();//imprime datos de alumnos
- printMateriasHTML();//imprime listado
-
- }
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(errorThrown);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }
- });//
- }//fin hay semestre
- }
- function buscaAlumno(clave){
- var i;
- for(i = 0; i<alumnosObj.length; i++){
- if(alumnosObj[i].id == clave)
- return i;
- }
- return -1;
- }
- function buscaMateria(index, id){
- var i;
- for(i = 0; i<alumnosObj[index].matArr.length; i++){
- if(alumnosObj[index].matArr[i].id == id)
- return i;
- }
- return -1;
- }
- function insertaMateriaAlumno(index, id, desc, clave, plan){
- if(buscaMateria(index, id) < 0){//no está
- alumnosObj[index].matArr.push({id: id, desc:desc, clave:clave, plan:plan, calif:"", revalidada:true});
- return true;
- }
- return false;
- }
- function borraMateriaAlumno(index, id){
- var pos = buscaMateria(index, id);
- if(pos >= 0){//si está
- alumnosObj[index].matArr.splice(pos, 1);
- return true;
- }
- return false;
- }
- function printAlumnosDataHTML(){
- for(var index=0; index < alumnosObj.length; index++){
- var alumno = alumnosObj[index].id;
- $("#tab"+alumno+" .nombre").text(alumnosObj[index].nombre);
- $("#tab"+alumno+" .plan").text(alumnosObj[index].plan);
- }
- }
- function datosMateriaHTML(desc, clave, plan){
- return '<td><b class="text-uppercase">'+desc+'</b><br>['+clave+'] '+plan+'</td>';
- }
- //alumnosObj.push({id: <?php echo $cve;?>, nombre:"", plan:"", matArr:[{id, desc, clave, plan, sem, grupo_id, grupo, califArr{calif, fecha, calif_tipo, revalidada}}]});
- //Para materias cargdas. Ya pueden tener Calificación
- function printMateriasHTML(){
- for(var index=0; index < alumnosObj.length; index++){
- var alumno = alumnosObj[index].id;
- var nuevaMateria ="";
- for(var m = 0; m < alumnosObj[index].matArr.length; m++){
- //{id, desc, clave, plan, calif, fecha, extra, revalidada}
- var id_mat = alumnosObj[index].matArr[m].id;
- var desc = alumnosObj[index].matArr[m].desc;
- var clave = alumnosObj[index].matArr[m].clave;
- var plan = alumnosObj[index].matArr[m].plan;
-
- //var sem = alumnosObj[index].matArr[m].sem;
- //var califArr = alumnosObj[index].matArr[m].califArr;
- //var extra = (alumnosObj[index].matArr[m].extra) ? 'checked="true"' : '';
-
- nuevaMateria ="";
- //Sólo muestra revalidadas
- if(alumnosObj[index].matArr[m].califArr.length > 0 && alumnosObj[index].matArr[m].califArr[0].revalidada){
- nuevaMateria = '<tr class="materia" id="mat_'+alumno+'_'+id_mat+'" data-al="'+alumno+'" data-mat="'+id_mat+'">';
- nuevaMateria += '<td class="text-secondary" width="80px"><a href="#" tabindex="-1" data-toggle="modal" data-target="#modal_confirm" title="Borrar" data-cve="'+alumno+'" data-mat="'+id_mat+'">\
- <span class="ing-basura ing-fw"></span> </a></td>';
- nuevaMateria += datosMateriaHTML(desc, clave, plan);
- nuevaMateria += '<td style="width:100px;" class="text-center">\
- <select class="form-control text-center text-uppercase calif check-modificada" name="calif" data-clave="" data-mat="">';
- for(var i=10; i>=_min_calif; i--){
- if(i == alumnosObj[index].matArr[m].califArr[0].calif)
- nuevaMateria += '<option value="'+i+'" selected="selected">'+i+'</option>';
- else
- nuevaMateria += '<option value="'+i+'">'+i+'</option>';
- }
- nuevaMateria += '</select></td>';
- nuevaMateria += '</tr>';
- }else{
- nuevaMateria = '<tr style="color:#aaa">';
- nuevaMateria += '<td class="text-secondary" width="80px"> </td>';
- nuevaMateria += datosMateriaHTML(desc, clave, plan);
- nuevaMateria += '<td style="width:100px;" class="text-center"></td>';
- nuevaMateria += '</tr>';
- }
- $(nuevaMateria).appendTo("#tab"+alumno+" .table-asignadas tbody");
- }
- }
- }
- //Para materias nuevas. No necesita Calificación y se puede borrar
- function creaMateriaHTML(index, id_mat, desc, clave, plan){
- var alumno = alumnosObj[index].id;
- var nuevaMateria ="";
- nuevaMateria = '<tr class="materia" id="mat_'+alumno+'_'+id_mat+'" data-al="'+alumno+'" data-mat="'+id_mat+'">';
- nuevaMateria += '<td class="text-secondary" width="80px"><a href="#" tabindex="-1" data-toggle="modal" data-target="#modal_confirm" title="Borrar" data-cve="'+alumno+'" data-mat="'+id_mat+'">\
- <span class="ing-basura ing-fw"></span> </a></td>';
- nuevaMateria += datosMateriaHTML(desc, clave, plan);
- nuevaMateria += '<td style="width:100px;" class="text-center">\
- <select class="form-control text-center text-uppercase calif check-modificada" name="calif" data-clave="" data-mat="">';
- for(var i=10; i>=_min_calif; i--){
- nuevaMateria += '<option value="'+i+'">'+i+'</option>';
- }
- nuevaMateria += '</select></td>';
- nuevaMateria += '</tr>';
- $(nuevaMateria).appendTo("#tab"+alumno+" .table-asignadas tbody");
- }
- function changeAllChecks(activo){
- $("#selectAll").prop("checked", activo);//deselecciona general
- $(".select_materia").prop("checked", activo);//deselecciona cada uno
- $("#btn_lote").prop("disabled", !activo);//bloquea boton
- }
- function preguntarAntesDeSalir(){
- if (_modificado)
- return "¿Deseas abandonar la página? Los últimos cambios que realizaste no se guardarán";
- }
- window.onbeforeunload = preguntarAntesDeSalir;
- $(document).on("change", ".check-modificada", function(e){
- _modificado = true;
- });
- $(document).ready(function(){
- loadMaterias();
- _selected = $(".nav-pills .active").data("id");
-
- $("#btn_lote").prop("disabled", true);
- $("#selectAll").change(function(){//selecciona materias para asignar
- var check = $(this).prop("checked");
- $(".select_materia").prop("checked", check);
- $("#btn_lote").prop("disabled", !check);
- });
-
- $(".select_materia").change(function(event){
- event.stopPropagation();
- //var check = $(this).prop("checked");
- var numberOfChecked = $('.select_materia:checked').length;
- var totalCheckboxes = $('.select_materia').length;
- if(numberOfChecked == totalCheckboxes){
- $("#selectAll").prop("checked", true);
- }else{
- $("#selectAll").prop("checked", false);
- }
- if(numberOfChecked > 0){
- $("#btn_lote").prop("disabled", false);
- }else{
- $("#btn_lote").prop("disabled", true);
- }
- });
-
- $("#btn_lote").click(function(){//asigna materias seleccionadas
- thisIndex = buscaAlumno(_selected);//devuelve indice
- var asignadas = 0;
- $(".select_materia:checked").each(function(index) {
- if(insertaMateriaAlumno(thisIndex, $(this).data("id"), $(this).data("desc"), $(this).data("clave"), $(this).data("plan"))){
- creaMateriaHTML(thisIndex, $(this).data("id"), $(this).data("desc"), $(this).data("clave"), $(this).data("plan"), $(this).data("plan"));
- _modificado = true;
- }else{
- asignadas++;
- }
- });
-
- if(asignadas > 0){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(asignadas+" materias ya está asignadas al alumno y fueron omitidas. Si no se muestra en esta pantalla, se asignó como materia regular.");
- }
-
- changeAllChecks(false);//deselecciona checks de busqueda de materias
- $("#tab"+_selected).find(".calif:enabled:visible:first").focus();
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- });
-
- //cambia tab, cambia variable de activo
- $(".nav-pills .nav-link").click(function(){
- _selected = $(this).data("id");
- });
-
- $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
- var clave = $(e.target).data("id");
- $("#tab"+clave).find(".calif:enabled:visible:first").focus();
- })
- $("#filter_sem").change(function(){
- if($("#filter_sem").val() == ""){
- $("#result_block").addClass("d-none");
- }else{
- $.ajax({
- url: './action/materiaasignar_all.php',
- type: 'POST',
- dataType: 'json',
- data: { sem: $("#filter_sem").val(), plan:_plan},
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }else{
- //cargar datos de materia
- var rows = $("#mat_asignar > tr").length;//cuenta accesos actuales
- if(result["materias"].length == 0){//no hay materias
- $("#result_block").addClass("d-none");
- $("#result_sin").removeClass("d-none");
- }else{
- $("#result_sin").addClass("d-none");
- //console.log(result["materias"]);
- $("#result_block").removeClass("d-none");
- if(rows > result["materias"].length){//sobran
- //borrar renglones extra (rows - result.length) pero dejar al menos 1
- while(rows > result["materias"].length && rows > 1){
- $("#mat_asignar tr:last-child").remove();
- rows--;
- }
- }else{//faltan
- // clone the rest of the rows
- for(var i=0; i<(result["materias"].length - rows); i++){
- $("#mat_asignar tr:first-child").clone(true).appendTo("#mat_asignar");
- }
- }
- if(result["materias"].length != 0){//hay materias?
- $("#mat_asignar").children().each(function(index) {
- if(index < result["materias"].length){//llenar info
- $(this).prop("id", "mat"+result["materias"][index]["id"]);
- $(this).data("id", result["materias"][index]["id"]);
- $(this).find(".materia-nombre").html(result["materias"][index]["desc"]);
- $(this).find(".materia-clave").html(result["materias"][index]["clave"]);
- $(this).find(".materia-plan").html(result["materias"][index]["plan"]);
- $(this).find(".select_materia").prop("id", "check"+result["materias"][index]["id"]);
- $(this).find(".select_materia").val(result["materias"][index]["id"]);
- $(this).find(".select_materia").data("id", result["materias"][index]["id"]).data("desc", result["materias"][index]["desc"]).data("clave", result["materias"][index]["clave"]).data("plan", result["materias"][index]["plan"])
- $(this).find("label").prop("for", "check"+result["materias"][index]["id"]);
- }
- });
- }
- }//hay materias
- }
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(errorThrown);
- }
- });//
- }//fin hay semestre
- }); //click
- //al abrir modal
- $("#modal_confirm").on('show.bs.modal', function (event) {
- var button = $(event.relatedTarget);// Button that triggered the modal
- $("#cve_borrar").val(button.data("cve"));
- $("#mat_borrar").val(button.data("mat"));
- if(button.data("cve") == 0)
- $("#all-msg").removeClass("d-none");
- else
- $("#all-msg").addClass("d-none");
- });
- $(".btn-borrar").click(function(){
- var pos;
- if($("#cve_borrar").val() == 0){//todos
- for(pos=0; pos<alumnosObj.length; pos++){
- if(borraMateriaAlumno(pos, $("#mat_borrar").val()))
- $('#mat_'+alumnosObj[pos].id+'_'+$("#mat_borrar").val()).remove();
- }
- }else{//uno solo
- pos = buscaAlumno($("#cve_borrar").val());
- if(borraMateriaAlumno(pos, $("#mat_borrar").val()))
- $('#mat_'+$("#cve_borrar").val()+'_'+$("#mat_borrar").val()).remove();
- }
-
- $("#modal_confirm").modal('hide');
- updateAll();//actualiza para todos
- _modificado = true;
- //$('#messageBox')[0].scrollIntoView({ block: "end" });
- });
-
- //alumnosObj.push({id: <?php echo $cve;?>, nombre:"", plan:"", matArr:[{id, desc, clave, plan, sem, grupo_id, grupo, califArr{calif, fecha, calif_tipo, revalidada}}]});
- $("#btn-guardar").click(function(){
- //guarda calif
- $(".table-asignadas .materia").each(function(index) {//cada renglón
- var pos = buscaAlumno($(this).data("al"));
- var matPos = buscaMateria(pos, $(this).data("mat"));
-
- var calif = [];
- if($(this).find(".calif").val() != ""){
- calif.push({calif: $(this).find(".calif").val(), calif_tipo:1, revalidada:true});
- }
- alumnosObj[pos].matArr[matPos].califArr = calif;
- });
-
- $.ajax({
- url: './action/revalidamaterias_update.php',
- type: 'POST',
- dataType: 'json',
- async: false,
- data: { json: JSON.stringify(alumnosObj)},
- beforeSend: function(x) {
- if (x && x.overrideMimeType) {
- x.overrideMimeType("application/j-son;charset=UTF-8");
- }
- },
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- }else{
- $("#errorBox").collapse('hide');
- }
- _modificado = false;
- $("#successBox").collapse('show');
- $("#successBox_text").html(result["ok"]);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(errorThrown);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }
- });//ajax
- });
-
- });
|