calificamateria.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. //alumnosObj.push({id: <?php echo $cve;?>, nombre:"", plan:"", matArr:[{id, desc, clave, plan, sem, grupo_id, grupo, califArr{calif, fecha, calif_tipo, revalidada}}]});
  2. //carga las materias en el objeto alumnosObj
  3. function loadMaterias(){
  4. if(idArr.length > 0){
  5. $.ajax({
  6. url: './action/calificamaterias_select.php',
  7. type: 'POST',
  8. dataType: 'json',
  9. data: { idArr: idArr, plan: _plan, tipo_calif:_tipo_calif},
  10. success: function(result) {
  11. if(result["error"]!= "" && result["error"] !== undefined){
  12. $("#errorBox").collapse('show');
  13. $("#errorBox_text").html(result["error"]);
  14. $('#messageBox')[0].scrollIntoView({ block: "end" });
  15. }else{
  16. //cargar datos de materias
  17. if(result["alumnos"].length > 0){//hay materias
  18. alumnosObj = result["alumnos"];
  19. }//hay materias
  20. printAlumnosDataHTML();//imprime datos de alumnos
  21. printMateriasHTML();//imprime listado
  22. $(document).find(".calif:enabled:visible:first").focus();
  23. }
  24. },
  25. error: function(jqXHR, textStatus, errorThrown ){
  26. $("#errorBox").collapse('show');
  27. $("#errorBox_text").html(errorThrown);
  28. $('#messageBox')[0].scrollIntoView({ block: "end" });
  29. }
  30. });//
  31. }//fin hay semestre
  32. }
  33. function buscaAlumno(clave){
  34. var i;
  35. for(i = 0; i<alumnosObj.length; i++){
  36. if(alumnosObj[i].id == clave)
  37. return i;
  38. }
  39. return -1;
  40. }
  41. function buscaMateria(index, id){
  42. var i;
  43. for(i = 0; i<alumnosObj[index].matArr.length; i++){
  44. if(alumnosObj[index].matArr[i].id == id)
  45. return i;
  46. }
  47. return -1;
  48. }
  49. function buscaCalif(arr, tipo){
  50. for(i = 0; i<arr.length; i++){
  51. if(arr[i]["calif_tipo"] == tipo){
  52. return i;
  53. }
  54. }
  55. return -1;
  56. }
  57. function printAlumnosDataHTML(){
  58. for(var index=0; index < alumnosObj.length; index++){
  59. var alumno = alumnosObj[index].id;
  60. $("#tab"+alumno+" .nombre").text(alumnosObj[index].nombre);
  61. $("#tab"+alumno+" .plan").text(alumnosObj[index].plan);
  62. }
  63. }
  64. function datosMateriaHTML(desc, grupo, clave, plan){
  65. var grupo_html="";
  66. if(!(grupo === null || grupo == ""))
  67. grupo_html = '<span class="mr-2 badge badge-secondary text-monospace">'+grupo+'</span>';
  68. return '<td><b class="text-uppercase">'+grupo_html+' '+desc+'</b><br>['+clave+'] '+plan+'</td>';
  69. }
  70. function calificaciones(clase, calif){
  71. var texto
  72. texto = '<select class="form-control '+clase+' check-modificada">';
  73. for(var i=10; i>=5; i--){
  74. if(i==10){
  75. texto+='<option value="">-</option>';
  76. }
  77. texto+='<option value="'+i+'"';
  78. if(calif == i)
  79. texto+=' selected="selected"';
  80. texto +='>'+i+'</option>';
  81. }
  82. texto+='<option value="0"';
  83. if(calif <= 0)
  84. texto+=' selected="selected"';
  85. if(_tipo_calif != 2)
  86. texto +='>NP</option>';
  87. else
  88. texto +='>SD</option>';
  89. texto+='</select>';
  90. return texto;
  91. }
  92. //Para materias cargdas. Ya pueden tener Calificación
  93. function printMateriasHTML(){
  94. for(var index=0; index < alumnosObj.length; index++){
  95. var alumno = alumnosObj[index].id;
  96. for(var m = 0; m < alumnosObj[index].matArr.length; m++){
  97. //{id, desc, clave, plan, calif, fecha, extra, revalidada}
  98. var id_mat = alumnosObj[index].matArr[m].id;
  99. var desc = alumnosObj[index].matArr[m].desc;
  100. var clave = alumnosObj[index].matArr[m].clave;
  101. var plan = alumnosObj[index].matArr[m].plan;
  102. var calif = alumnosObj[index].matArr[m].calif;
  103. var grupo = alumnosObj[index].matArr[m].grupo;
  104. var nuevaMateria ="";
  105. nuevaMateria = '<tr class="materia" id="mat_'+alumno+'_'+id_mat+'" data-al="'+alumno+'" data-mat="'+id_mat+'">';
  106. nuevaMateria += datosMateriaHTML(desc, grupo, clave, plan);
  107. nuevaMateria += '<td style="width:120px;" class="text-center">';
  108. nuevaMateria += calificaciones("calif", calif)+'</td>';
  109. nuevaMateria += '</tr>';
  110. $(nuevaMateria).appendTo("#tab"+alumno+" .table-asignadas tbody");
  111. }
  112. }
  113. }
  114. function preguntarAntesDeSalir(){
  115. if (_modificado)
  116. return "¿Deseas abandonar la página? Los últimos cambios que realizaste no se guardarán";
  117. }
  118. window.onbeforeunload = preguntarAntesDeSalir;
  119. $(document).on("change", ".check-modificada", function(e){
  120. _modificado = true;
  121. });
  122. $(document).ready(function(){
  123. loadMaterias();
  124. _selected = $(".nav-pills .active").data("id");
  125. //cambia tab, cambia variable de activo
  126. $(".nav-pills .nav-link").click(function(){
  127. _selected = $(this).data("id");
  128. });
  129. $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  130. //e.target // newly activated tab
  131. //e.relatedTarget // previous active tab
  132. var clave = $(e.target).data("id");
  133. $("#tab"+clave).find(".calif:enabled:visible:first").focus();
  134. })
  135. $(".btn-next").click(function(){
  136. var next = $('.nav-pills .active').parent().next('li');
  137. if(next.length){
  138. next.find('a').trigger('click');
  139. }else{
  140. $('#tablist a:first').tab('show');
  141. }
  142. });
  143. //alumnosObj.push({id: <?php echo $cve;?>, nombre:"", plan:"", matArr:[{id, desc, clave, plan, sem, grupo_id, grupo, califArr{calif, fecha, calif_tipo, revalidada}}]});
  144. $("#btn-guardar").click(function(){
  145. //guarda valores en objeto
  146. $(".table-asignadas .materia").each(function(index) {//cada renglón
  147. var pos = buscaAlumno($(this).data("al"));
  148. var matPos = buscaMateria(pos, $(this).data("mat"));
  149. //if($(this).find(".calif").val() != ""){
  150. alumnosObj[pos].matArr[matPos]["calif"] = $(this).find(".calif").val();
  151. alumnosObj[pos].matArr[matPos]["calif_tipo"] = _tipo_calif;
  152. //}
  153. });
  154. $.ajax({
  155. url: './action/calificamaterias_update.php',
  156. type: 'POST',
  157. dataType: 'json',
  158. async: false,
  159. data: { json: JSON.stringify(alumnosObj), tipo:_tipo_calif},
  160. beforeSend: function(x) {
  161. if (x && x.overrideMimeType) {
  162. x.overrideMimeType("application/j-son;charset=UTF-8");
  163. }
  164. },
  165. success: function(result) {
  166. if(result["error"]!= "" && result["error"] !== undefined){
  167. $("#errorBox").collapse('show');
  168. $("#errorBox_text").html(result["error"]);
  169. }else{
  170. $("#errorBox").collapse('hide');
  171. _modificado = false;
  172. $("#successBox").collapse('show');
  173. $("#successBox_text").html(result["ok"]);
  174. }
  175. $('#messageBox')[0].scrollIntoView({ block: "end" });
  176. },
  177. error: function(jqXHR, textStatus, errorThrown ){
  178. $("#errorBox").collapse('show');
  179. $("#errorBox_text").html(errorThrown);
  180. $('#messageBox')[0].scrollIntoView({ block: "end" });
  181. }
  182. });//ajax
  183. });
  184. });