insigniapersonal_edit.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. function getDatalistFirstLiData(selector, data){
  2. var index=1;
  3. var elementRoot = $(selector).parents('.datalist');
  4. var num = elementRoot.find('ul li:not(.not-selectable)').length;
  5. if(index < num){
  6. while(elementRoot.find('ul li:nth-child('+index+')').hasClass("not-selectable") && index <= num){
  7. index++;
  8. }
  9. var element = elementRoot.find('ul li:nth-child('+index+')');
  10. return element.data(data);
  11. }
  12. }
  13. function borraInsignia(insignia, evidencia){
  14. $.ajax({
  15. url: './action/insigniapersonal_delete.php',
  16. type: 'POST',
  17. dataType: 'json',
  18. data: {'insignia':insignia, 'alumno':alumno, 'evidencia':evidencia},
  19. success: function(result) {
  20. if(result["error"]!= "" && result["error"] !== undefined){
  21. $("#errorBox").collapse('show');
  22. $("#errorBox_text").html(result["error"]);
  23. $('#messageBox')[0].scrollIntoView({ block: "end" });
  24. }else{
  25. $("#"+insignia).remove();
  26. $("#successBox").collapse('show');
  27. $("#successBox_text").html(result["ok"]);
  28. $('#modal_confirm').modal('hide');
  29. }
  30. },
  31. error: function(jqXHR, textStatus, errorThrown ){
  32. $("#errorBox").collapse('show');
  33. $("#errorBox_text").html("Error al insertar la insignia del alumno");
  34. $('#messageBox')[0].scrollIntoView({ block: "end" });
  35. }
  36. });//ajax
  37. }
  38. function validaForma(){
  39. var error = false;
  40. $("#modal").find(".is-invalid").removeClass("is-invalid");
  41. if(trim($("#titulo").val()) == ""){
  42. error = true;
  43. $("#titulo").addClass("is-invalid");
  44. }
  45. if(trim(tinymce.get("desc").getContent()) == ""){
  46. error = true;
  47. $("#descHelp").removeClass("d-none");
  48. }
  49. if($("#fecha_inicial").val()!= "" && !validaFecha($("#fecha_inicial").val())){
  50. error = true;
  51. $("#fecha_inicial").addClass("is-invalid");
  52. }
  53. if($("#fecha_final").val()=="" || !validaFecha($("#fecha_final").val())){
  54. error = true;
  55. $("#fecha_final").addClass("is-invalid");
  56. }
  57. if($("#fecha_inicial").val()!= "" && $("#fecha_final").val()!= ""){
  58. if(!error && fechaMayor( trim($("#fecha_inicial").val()), trim($("#fecha_final").val()) ) > 0 ){
  59. error = true;
  60. //$("#fecha_inicial").addClass("is-invalid");
  61. $("#fecha_final").addClass("is-invalid");
  62. }
  63. }
  64. if(_admin == false && ($("#archivo_plain").val()) == "" ){
  65. error = true;
  66. $("#archivo_plain").addClass("is-invalid");
  67. }
  68. return !error;
  69. }
  70. function hideBorraAtributo(){
  71. var total = $("#atributo-list >tr").length;//cuenta renglones actuales
  72. if(total == 1){
  73. $('.borra-atributo').hide();
  74. }else{
  75. $('.borra-atributo').show();
  76. }
  77. }
  78. $(document).ready(function(){
  79. setDatalistFirst('#categoria');
  80. setDatalist('#puesto',12);
  81. $("#categoria_color").css("color", getDatalistFirstLiData('#categoria', 'color') );
  82. $(".date-picker" ).datepicker({ dateFormat: "dd/mm/yy", changeMonth: true, changeYear: true});
  83. $(".date-picker" ).datepicker( $.datepicker.regional[ "es" ] );
  84. $('#submitBtn').click(function(){
  85. if(validaForma()){
  86. $("#formaModal").submit();
  87. $('#modal').modal('hide');
  88. }
  89. });
  90. $('.btn-borrar').click(function(){
  91. borraInsignia($("#id_borrar").val(), $("#evidencia_borrar").val());
  92. });
  93. $('#dlCategoria ul li').click(function(){//cambia datalist
  94. var color = $(this).data('color');
  95. $("#categoria_color").css("color", color);
  96. });
  97. $('#modal').on('show.bs.modal', function (event) {
  98. var button = $(event.relatedTarget); // Button that triggered the modal
  99. var tipo = button.data("tipo");
  100. //Borra atributos
  101. while($('#atributo-list tr').length > 1){
  102. $("#atributo-list tr:last-child").remove();
  103. }
  104. $("#atributo-list tr .atributo_select").val(0);
  105. $("#atributo-list tr .nivel_select").val(0);
  106. $("#descHelp").addClass("d-none");
  107. if(tipo == 2){
  108. var insingia_id = button.parents(".alumno-row").data("id");
  109. $("#insignia_id").val(insingia_id);
  110. $("#formaModal").prop("action", "./action/insigniapersonal_update.php");
  111. $("#modalLabel").html("Editar insignia de alumno");
  112. $("#evidenciaBlock").hide();
  113. $("#atributo-list_ver")
  114. $.ajax({
  115. url: './action/insigniapersonal_select.php',
  116. type: 'POST',
  117. dataType: 'json',
  118. data: { id: insingia_id, alumno: alumno},//alumno en php inicial
  119. success: function(result) {
  120. if(result["error"]!= "" && result["error"] !== undefined){
  121. $("#errorBox").collapse('show');
  122. $("#errorBox_text").html("Error al leer la insignia.<br>"+result["error"]);
  123. $('#messageBox')[0].scrollIntoView({ block: "end" });
  124. }else{
  125. $("#titulo").val(result["titulo"]);
  126. tinymce.get("desc").setContent(result["desc"]);
  127. setDatalist("#categoria",result["tipo_id"]);
  128. $("#categoria_color_ver").css("color",result["tipo_color"]);
  129. setDatalist("#puesto",result["puesto_id"]);
  130. $("#fecha_inicial").val(result["fecha_ini"]);
  131. $("#fecha_final").val(result["fecha_fin"]);
  132. if(result["atributos"].length > 1){
  133. var rows = $("#atributo-list > tr").length;//cuenta renglones actuales
  134. for(var i=0; i<(result["atributos"].length - rows); i++){
  135. $("#atributo-list tr:first-child").clone().appendTo("#atributo-list");
  136. }
  137. $("#avanzadoBox").collapse('show');
  138. $("#atributo-list tr").each(function(index) {
  139. $(this).find('.atributo_select').val(result["atributos"][index]["id"]);
  140. $(this).find('.nivel_select').val(result["atributos"][index]["nivel_id"]);
  141. });
  142. }else{
  143. $("#avanzadoBox").collapse('hide');
  144. }
  145. if(result["evidencia"] != "" && result["evidencia"] != null){
  146. $("#evidencia").attr("href", "./files/evidencias/"+result["evidencia"]);
  147. $("#evidencia").parent().show();
  148. }else{
  149. $("#evidencia").parent().hide();
  150. }
  151. }
  152. },
  153. error: function(jqXHR, textStatus, errorThrown ){
  154. $("#errorBox").collapse('show');
  155. $("#errorBox_text").html("Error al obtener los datos");
  156. $('#messageBox')[0].scrollIntoView({ block: "end" });
  157. }
  158. });//ajax
  159. }else{
  160. tinymce.get("desc").setContent("")
  161. $("#titulo").val("");
  162. $("#formaModal").prop("action", "./action/insigniapersonal_insert.php");
  163. $("#modalLabel").html("Asignar insignia al alumno");
  164. $("#avanzadoBox").collapse('hide');
  165. $("#evidenciaBlock").show();
  166. $("#evidencia").parent().hide();
  167. }
  168. hideBorraAtributo();
  169. });
  170. $('#modal_confirm').on('show.bs.modal', function (event) {
  171. var button = $(event.relatedTarget); // Button that triggered the modal
  172. var id = button.parents(".alumno-row").data("id");
  173. var evidencia = button.parents(".alumno-row").data("evidencia");
  174. $("#id_borrar").val(id);
  175. $("#evidencia_borrar").val(evidencia);
  176. });
  177. $('#archivo').customFile({
  178. maxFiles: 1,
  179. maxKBperFile: 20*1024,
  180. popup : {
  181. active : true, // false if you don’t like popup messages
  182. autoclose : true, // or false
  183. delay : 4000 // delay for close (in miliseconds), of course, if autoclose is set true
  184. },
  185. callbacks : {
  186. beforeRemove : function(item){
  187. $("#previo").addClass("d-none");
  188. },
  189. /*onSuccess : function(item, callback){
  190. $.customFile.ajax(item, {
  191. url : "./action/alumnos_importar_previo.php",
  192. type: "POST",
  193. dataType: "json",
  194. progressBar : {
  195. appendTo: item.node,
  196. closeAfterComplete: false
  197. },
  198. success: function(result) {
  199. if(result["error"]!= "" && result["error"] !== undefined){
  200. $("#errorBox").collapse('show');
  201. $("#errorBox_text").html(result["error"]);
  202. $('#messageBox')[0].scrollIntoView({ block: "end" });
  203. }else{
  204. if(result["alumnosArr"].length == 0){//alumnos
  205. $("#previo").addClass("d-none");
  206. $("#errorBox").collapse('show');
  207. $("#errorBox_text").html("No se encontraron alumnos para importar");
  208. $('#messageBox')[0].scrollIntoView({ block: "end" });
  209. }else{
  210. $('#forma')[0].scrollIntoView({ block: "start" });
  211. $("#al_total").html(result["alumnosArr"].length);
  212. $("#al_omitidos").html(result["omitidosArr"].length);
  213. $("#previo").removeClass("d-none");
  214. $("#sin_alumnos").addClass("d-none");
  215. if(result["omitidosArr"].length > 0){
  216. $("#omitidos_block").removeClass("d-none");
  217. //$("#al_list").find("td").html("");//limpia tabla actual
  218. var rows = $("#al_list > tr").length;//cuenta accesos actuales
  219. if(rows > result["omitidosArr"].length){//sobran
  220. //borrar renglones extra (rows - result.length) pero dejar al menos 1
  221. while(rows > result["omitidosArr"].length && rows > 1){
  222. $("#al_list .alumno:last-child").remove();
  223. rows--;
  224. }
  225. }else{//faltan
  226. // clone the rest of the rows
  227. for(var i=0; i<(result["omitidosArr"].length - rows); i++){
  228. $("#al_list .alumno:first-child").clone().appendTo("#al_list");
  229. }
  230. }
  231. $("#al_list tr").each(function(index) {
  232. if(index < result["omitidosArr"].length){//llenar info
  233. //$(this).find(".num").html(index+1);
  234. $(this).find(".apellidos span").text(result["omitidosArr"][index]["apellidos"]);
  235. $(this).find(".nombre span").html(result["omitidosArr"][index]["nombre"]);
  236. $(this).find(".clave span").html(result["omitidosArr"][index]["clave"]);
  237. $(this).find(".curp span").html(result["omitidosArr"][index]["curp"]);
  238. $(this).find(".ingreso span").html(result["omitidosArr"][index]["ingreso"]);
  239. $(this).find(".generacion span").html(result["omitidosArr"][index]["generacion"]);
  240. $(this).find(".correo span").html(result["omitidosArr"][index]["correo"]);
  241. $(this).find(".telcasa span").html(result["omitidosArr"][index]["telcasa"]);
  242. $(this).find(".telcel span").html(result["omitidosArr"][index]["telcel"]);
  243. }
  244. });//each
  245. }else{
  246. $("#omitidos_block").addClass("d-none");
  247. }
  248. //-----
  249. var rows = $("#upload_list > .alumno").length;//cuenta accesos actuales
  250. if(rows > result["alumnosArr"].length){//sobran
  251. //borrar renglones extra (rows - result.length) pero dejar al menos 1
  252. while(rows > result["alumnosArr"].length && rows > 1){
  253. $("#upload_list .alumno:last-child").remove();
  254. rows--;
  255. }
  256. }else{//faltan
  257. // clone the rest of the rows
  258. for(var i=0; i<(result["alumnosArr"].length - rows); i++){
  259. $("#upload_list .alumno:first-child").clone().appendTo("#upload_list");
  260. }
  261. }
  262. $("#upload_list .alumno").each(function(index) {
  263. if(index < result["alumnosArr"].length){//llenar info
  264. //$(this).find(".num").html(index+1);
  265. $(this).find(".apellidos").val(result["alumnosArr"][index]["apellidos"]);
  266. $(this).find(".nombre").val(result["alumnosArr"][index]["nombre"]);
  267. $(this).find(".clave").val(result["alumnosArr"][index]["clave"]);
  268. $(this).find(".curp").val(result["alumnosArr"][index]["curp"]);
  269. $(this).find(".ingreso").val(result["alumnosArr"][index]["ingreso"]);
  270. $(this).find(".generacion").val(result["alumnosArr"][index]["generacion"]);
  271. $(this).find(".correo").val(result["alumnosArr"][index]["correo"]);
  272. $(this).find(".telcasa").val(result["alumnosArr"][index]["telcasa"]);
  273. $(this).find(".telcel").val(result["alumnosArr"][index]["telcel"]);
  274. $(this).find(".ingreso").val(result["alumnosArr"][index]["ingreso"]);
  275. }
  276. });//each
  277. }//fin alumnos
  278. }//fin else error
  279. },
  280. error: function(jqXHR, textStatus, errorThrown ){
  281. console.log("error");
  282. $("#errorBox").collapse('show');
  283. $("#errorBox_text").html("Error de PHP");
  284. $('#messageBox')[0].scrollIntoView({ block: "end" });
  285. },
  286. complete : function(){
  287. callback();
  288. }
  289. });
  290. return false; // Required for callback only fires once (when uploading is finished)
  291. }*/
  292. }
  293. });
  294. $("#agrega-atributo").click(function(){
  295. var cloned = $("#atributo-list >tr:first-child").clone(true).appendTo("#atributo-list");
  296. cloned.find('select').get(0).selectedIndex = 0;
  297. hideBorraAtributo();
  298. });
  299. $(".borra-atributo").click(function(){//quita profesor
  300. $(this).parents("tr").remove();
  301. hideBorraAtributo();
  302. });
  303. });
  304. function hideBorraAtributo(){
  305. var total = $("#atributo-list >tr").length;//cuenta renglones actuales
  306. if(total == 1){
  307. $('.borra-atributo').hide();
  308. }else{
  309. $('.borra-atributo').show();
  310. }
  311. }